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

REST POST在POSTMAN中正常工作,但在使用Spring RestTem板时例外

商皓
2023-03-14

我正在编写一个Rest客户端来发布JSON数据使用Spring RestTem板。使用POSTMAN和下面的JSON数据在体内得到正确的响应-

{
    "InCode":"test",
    "Name":"This is  test",
    "Email":"test@gmail.com",
    "Id":18,
}

但是,当尝试使用SpringRESTTemplate访问RESTAPI时,如下所示

ResponseEntity<String> response = restTemplate.exchange(baseUrl,
                HttpMethod.POST, getHeaders(), String.class);

private HttpEntity<?> getHeaders() throws JSONException {
JSONObject request = new JSONObject();
        request.put("Email", "test@gmail.com");
        request.put("Id", "18");
        request.put("Name", "This is  test");
        request.put("InCode", "test");

        headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
        return new HttpEntity<>(request.toString(), headers);
        }

我有个例外-

11:52:56.808 [main] DEBUG o.s.web.client.RestTemplate - Created POST request for "http://server-test/platform/v4/org"
11:52:56.815 [main] DEBUG o.s.web.client.RestTemplate - Setting request Accept header to [text/plain, application/json, application/*+json, */*]
12:03:47.357 [main] DEBUG o.s.web.client.RestTemplate - Writing [{"InCode":"test","Email":"test@gmail.com","Id":"18","Name":"This is  test"}] using [org.springframework.http.converter.StringHttpMessageConverter@6a1aab78]
11:52:57.574 [main] DEBUG o.s.web.client.RestTemplate - POST request for "http://server-test/platform/v4/org" resulted in 500 (Internal Server Error); invoking error handler
Exception in thread "main" org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:641)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:597)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:557)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:475)

我会感谢你的帮助。

共有3个答案

黄涵畅
2023-03-14

我也面临同样的问题。打印请求和URL后,我发现我使用了错误的endpoint。你能试着在日志中打印URL并检查是否正确吗?

郭德惠
2023-03-14

这样试试

 try {
        return restTemplate.exchange(url, httpMethod, httpEntity, String.class);
     } catch(HttpStatusCodeException e) {
        return ResponseEntity.status(e.getRawStatusCode()).headers(e.getResponseHeaders())
                .body(e.getResponseBodyAsString());
     }
颛孙嘉玉
2023-03-14

您正在设置接受标头,它定义了您将接受哪种内容类型作为响应。

相反,您必须将标题Content-Type设置为Application/json。

编辑:

在java代码中,id是一个字符串,在邮递员中,id是一个数字。这可能会导致服务器出现故障吗?

 类似资料:
  • 我正在尝试实现这个APIhttps://api.bnm.gov.my/portal#operation/ERLatest 根据上面的URL,它的GET请求必须带有值为“application/vnd.BNM.API.v1 json”的Accept-herader 当我尝试与邮递员,可以得到回应- 这就是我所做的,以在我的Spring启动应用程序中获得相同的响应- 但它没有得到正确的回应,我得到的是

  • 我正在尝试调用Workday招聘网络服务的Put_Background_Check操作。我已经在SoapUI中打开了WSDL文件,并成功地发送了以下XML。。。 我得到以下回应。。。 问题是,当我试图在Postman(或cURL或Python请求)中用相同的标题重新创建相同的POST请求时,我会得到无效的用户名或密码错误。SoapUI在这里做什么特别的事情吗?本案的回应如下...

  • 我正在测试系统上使用外部REST API。我正在尝试实现一个上载路径,我正在使用Apache HTTPClient。我尝试了以下邮差配置,效果非常好: 上传工作正常。 我总是从rest api中得到一个特定错误: 上载路径的文档中提到了以下详细信息: 标题内容类型多部分/表单数据 我想我在我的请求中完成了这个列表中的每一点——那么邮递员请求和我自己的java http请求之间的区别是什么呢? 我错

  • 我在后端使用Axios时遇到了问题。这可能是一个非常简单的修复,因为我是新手。 邮递员:对于有效和无效的凭据都收到正确的响应。 axios:对于有效的crendentials会收到正确的响应,但是当输入无效的凭据时,axios方法的catch块会运行。

  • 在Apache J Meter中用1个线程触发请求时,我得到以下错误-org.Apache.http.nohttpresponseException:xxx.tc.at.xxx.net:8443未能在org.Apache.http.impl.conn.defaultthtpresponseparser.parsehead(Defaultthtpresponseparser.java:141)在or

  • 我有一个对soap Web服务的请求,该服务在SoapUi中运行良好。我想在python脚本中调用此Web服务。 我尝试了一些模块:zeep,泡沫,...但是我总是有一个SSL错误。 以下是信息: https://37.71XXXXXXACONYX?wsdl 基本认证:用户名密码 身份验证类型:抢占式 我在SoapUi中提供了xml。 有人有什么想法吗? 谢谢!! 我试过: