我一直在尝试使用restTemplate使用带有PUT动词的API。我有以下代码
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
HttpEntity<String> entity = new HttpEntity<String>(jsonString,headers);
restTemplate.put(Url+"/'"+id,entity, String.class);
我的jsonString
具有以下内容。
{
"id":"asdfafaff-fsf3-4b1c-a7c4-13352252daa",
"product":"MyProductName",
"Organization":"my company name test",
"Organizationid":"tert122Teq-rtq-q556trt-qtqtqt3-131rtqtqt",
"ProductProperties":"Hc2",
"Locations":{
"results":[
]
},
"Status":"Gone",
"DisabledByType":null,
"roles":null,
"Url":"wwww.google.com",
"Key":"xxxxxxxxxx",
"Secret":"xxxxxxxxxxx",
"Hash":"yyhhytyutyutuet",
"validity":null,
"Type":"basic",
"Reason":null,
"Barcodes":{
"results":[
"tetetetetetete"
]
},
"RelatedBarcodes":{
"results":[
]
},
"CustomizedFields":{
"results":[
]
}}
一切正常,但我收到此错误
HttpClientErrorException: 400 Bad Request.
` at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:79)
at org.springframework.security.oauth2.client.http.OAuth2ErrorHandler.handleError(OAuth2ErrorHandler.java:172)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:730)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:688)
at org.springframework.security.oauth2.client.OAuth2RestTemplate.doExecute(OAuth2RestTemplate.java:128)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:644)
at org.springframework.web.client.RestTemplate.put(RestTemplate.java:459)`
可能是什么问题?
答案 0 :(得分:1)
当我们不知道您要使用的API时,不可能指出确切的问题是什么。
HTTP状态400
表示服务器由于语法无效而无法处理您发送的请求。这是非常通用的消息,其背后可能有无数原因。
您必须自己弄清楚是什么导致了此响应。您可以通过查看收到的回复的正文来实现。由于尚未声明要使用哪个ResponseErrorHandler
,因此已应用默认的DefaultResponseErrorHandler
。打开调试模式,并在方法public void handleError(ClientHttpResponse response)
上放置一些断点。在那里,您应该能够从发生问题的响应中获得更多详细信息,并相应地解决您的请求。