Bleow是json,必须使用Spring Rest Template转换为对象。
{"userResponse": {
"build": 1,
"code": 400,
"status": "Failed",
"validationErrors": [
{
"fieldName": "userId",
"message": "User Id is NOT in valid format"
},
{
"fieldName": "password",
"message": "Password cannot be less than 8 characters"
}
]
}}
当validationErrors的元素列表是响应的一部分时,问题出在此处。
以下是弹簧支架模板配置。
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
<property name="supportedMediaTypes" value="application/json" />
</bean>
</list>
</property>
</bean>
下面是调用postForObject的代码。
restTemplate.postForObject( "ServiceUrl", "userinput", Registration.class );
以下是调用服务时抛出的错误。
org.springframework.web.client.HttpClientErrorException: 400 Bad Request
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:90)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:494)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:451)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:409)
请提供一些意见以解决问题。
答案 0 :(得分:0)
您的“userinput”需要是JSON格式的字符串,而不是,因此您尝试联系的服务可能会回复“错误请求”,因为您没有发送有效的JSON。
API documentation告诉您如何格式化该方法的参数。你应该确保你发布了一个格式正确的JSON(我建议使用一个java对象,并使用Jackson这样序列化它:
ObjectMapper mapper = new ObjectMapper();
ObjectWriter normalWriter = mapper.writer();
String jsonString = normalWriter.writeValueAsString(objectToMakeJson);
答案 1 :(得分:0)
如前所述,"userinput"
应该是有效的JSON(例如{"userinput" : {"dataKey" : "dataValue"}}
)。此外,不清楚"ServiceUrl"
是否是您提供的代码段中实际网址的占位符,请确保该网址也有效。