【发布时间】:2019-12-30 20:08:08
【问题描述】:
我一直在尝试使用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)`
可能是什么问题?
【问题讨论】:
-
最可能的原因是您正在构建的 URL 中多余的
'撇号:Url+"/'"+id -
@Andreas 网址很好。当我打印它时,它会显示我想使用的 ur。
-
真的吗?网址
http://example.com/foo/'asdfafaff-fsf3-4b1c-a7c4-13352252daa正确吗?用那个悬空的'?如果这是真的,那真是一个奇怪的 API。 -
@Andreas 我已经删除了它,但我仍然有同样的问题
-
oauth2 错误与身份验证有关。也许您缺少身份验证标头?
标签: java spring-boot resttemplate