当前位置: 首页 > 知识库问答 >
问题:

使用spring从一个api向另一个api发出post请求

陆绍辉
2023-03-14

我有一个API,让用户使用一些凭证登录,我正在开发另一个API,用来注册程序的日志。

基本上我想在我的方法上调用另一个api。

这是我现在拥有的代码,但我总是收到500个空错误:

这是我的控制器上的登录方法:

@RequestMapping(value = "/authenticate", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public Object authenticate(@RequestBody UserEntity user) {

    logger.debug("Begin request UaaController.authenticate()");

    try {
        this.redirectLogs("log that I want to process", logs_url);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    UserEntity usr = authenticationService.authenticate(user.getName(), user.getPassword().getPassword());

    if (usr == null) {
        logger.debug("User could not be found when executing UaaController.authenticate()");
        return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
    } else {
        logger.debug("Executed UaaController.authenticate() successfully");
        return UaaService.getPermissionsFromUser(usr);
    }

}

当用户尝试对自己进行身份验证时,此方法 this.redirectLogs 应将消息发送到我的日志 API,并从中创建日志。

这是方法:

private Object redirectLogs(String body,String logs_url) throws IOException {


    StringBuilder redirectUrl = new StringBuilder();
    redirectUrl.append(logs_url);


    RestTemplate restTemplate = new RestTemplate();

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    HttpEntity<String> entity = new HttpEntity<>(body, headers);

    String response= restTemplate.postForObject(redirectUrl.toString(), entity, String.class);

    return response;

}

日志 URL 是该方法在我的 loggerAPI 上具有的路径:

interservice.logs.endpoint=http://localhost:8084/logs/success

这是我的日志控制器:

@RestController("/logs")
public class Log {

private static final Logger LOG = Logger.getLogger(Log.class.getName());


@PostMapping("/success")
public String helloWorld() {
    String response = "Welcome to javainuse " + new Date();
    LOG.log(Level.INFO, response);

    return response;
}

}

当Im调试程序停止时,当Im做调用restTemplate.postForObject调用。

观察:String响应="Welcome to javainuse"new Date();在我的log方法上只是为了测试,我想要的是在post请求的正文上呈现消息,但现在我只希望API之间的连接正常工作。

共有1个答案

太叔正文
2023-03-14

试试这个。

private Object redirectLogs(String body) {
   return Jsoup.connect("http://localhost:8084/logs/success")
            .method(Connection.Method.POST)
            .header("Content-Type", "application/json")
            .requestBody(body)
            .execute();
}

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.8.3</version>
</dependency>

和邮递员检查你的第二个控制器

 类似资料:
  • 第二个SpringRest空气污染指数是第一个空气污染指数 我谷歌了很多,学习了很多教程,玩了所有的RestTemplate方法,但都没有成功。 当我调试第二个API时,我进入RestTemplate类,当它进行最后一次调用时,它失败了,然后进入doInvoke方法的catch块,并抛出InvocationTargetException,它位于Spring的HandlerMethod类上。

  • 我在Azure Active Directory中有一个租户场景,其中API1需要使用身份验证调用另一个API2,并且API1是从SPA调用的。 只是将API1中从SPA接收到的用户JWT传递给调用API2进行身份验证是否正确? 类似于:https://github.com/azure-samples/active-directory-dotnet-webapi-onbehalfof

  • 问题内容: 我有一个返回promise的方法,并且在内部该方法调用一个API,该API每分钟只能有20个请求。问题是我有很多对象(大约300个),并且我想为每个对象调用API。 目前,我有以下代码: 但是它不处理时序约束。我希望我可以使用_.chunk和_.debounce之类的东西,但是我无法解决这个问题。有人可以帮我吗? 问题答案: 您可以每分钟发送1个包含20个请求的块,或者每3秒将其间隔1

  • 问题内容: 我有一个RESTful API,我已在EC2实例上使用Elasticsearch的实现公开了索引内容的语料库。我可以通过从终端机(MacOSX)运行以下命令来查询搜索: 如何使用或(不确定要使用哪个请求- 一直在使用urllib2,但听说请求更好…)将以上转换为API请求?我是否可以通过标题? 问题答案: 使用请求: 然后,根据您的API返回的响应类型,您可能需要查看或(或可能先检查)

  • 我有一个RESTful API,我在EC2实例上使用Elasticsearch实现来索引内容语料库。我可以通过从我的终端(MacOSX)运行以下命令来查询搜索: 我如何使用python/requests或python/urllib2将上述内容转换为API请求(不确定应该选择哪一个-一直在使用urllib2,但听说请求更好?我是作为标题传递还是以其他方式传递?

  • 我发现了一个youtube视频如何做一个get url,但我需要做一个帖子到一个REST API。我不知道怎么做。 我试着看看这里,但大部分都是Java。 使用GET,我只收到一个错误,因为我没有执行POST请求。