Spring RestTemplate给出"500"错误但是相同的URL,凭证在RestClient和Curl中起作用

Kat*_*hir 15 spring

Url,Credentials在RestClient UI以及Curl中工作,因为当通过Spring RestTemplate访问相同内容时,我遇到"500"错误.

我使用以下代码:

MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
map.add("name", user);
map.add("password", password);
restTemplate.postForObject(url, request, Employee.class, map);
Run Code Online (Sandbox Code Playgroud)

请告诉我您的建议或意见以解决问题.

You*_*ess 13

我建议您创建HttpComponentsClientHttpRequestFactory并将其传递给您RestTemplate,如下所述:

ClientHttpRequestFactory requestFactory = new     
      HttpComponentsClientHttpRequestFactory(HttpClients.createDefault());

RestTemplate restTemplate = new RestTemplate(requestFactory);
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以在测试应用程序时避免服务器端问题(如面临错误代码500).

我有同样的问题,在我的本地环境中工作,而不是在服务器上.

在构建它时传递HttpClients.createDefault()给你是一个好习惯,HttpComponentsClientHttpRequestFactory因为默认情况下,这个工厂使用系统属性HttpClient为你的工厂创建,这可能会给真实的服务器环境带来很多痛苦.您也可以通过自定义HttpClient.


小智 8

RestTemplate header Accept problem 
--> accept - text/plain, application/json, */*

HttpClient 4.x header Accept
--> accept - application/json
Run Code Online (Sandbox Code Playgroud)

所以我修好了

HttpHeaders headers = new HttpHeaders();
headers.add("Accept", MediaType.APPLICATION_JSON_VALUE);
Run Code Online (Sandbox Code Playgroud)

http://www.manning-sandbox.com/message.jspa?messageID=119733


iOS*_*r84 5

我也遇到过服务器响应为“500 Internal server error”的情况

虽然我收到了Postman对相同参数值的成功响应。所以问题不在服务器端。

问题是参数名称拼写错误,应用程序参数和服务器参数之间的拼写不匹配

Server parameter        -> requestLabel
Application parameter   -> requestLable
Run Code Online (Sandbox Code Playgroud)

希望像我这样的新人能从中得到帮助。


Kat*_*hir 1

下面工作正常

对于帖子:

restTemplate.postForObject(url,parametersMap,Employee.class);

url 是: String - Rest api URLparametersMap - MultiValueMap Employee - 需要从 JSON 响应转换的对象