gpt4 book ai didi

java - RestTemplate.postForObject - 错误 : org. springframework.web.client.HttpClientErrorException:400 错误请求

转载 作者:搜寻专家 更新时间:2023-11-01 03:06:53 26 4
gpt4 key购买 nike

我正在尝试以这种方式使用服务:

import java.util.ArrayList;
import java.util.List;

import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate;

public class StatesAPI {
private RestTemplate restTemplate;
private String apiEndpoint = "http://service/Geo.svc/getsomethingJson?format=json";

public static void main(String[] args) {
StatesAPI s = new StatesAPI();
s.foo("CA");
}

public void foo(String state) {
String requestBody = "{\"statename\":\"" + state + "\"}";
String apiResponse = getRestTemplate().postForObject(apiEndpoint,
requestBody, String.class);
System.out.println(apiResponse);
}

public RestTemplate getRestTemplate() {
// TODO: Fix the RestTemplate to be a singleton instance.
restTemplate = (this.restTemplate == null) ? new RestTemplate()
: restTemplate;
HttpMessageConverter<?> formHttpMessageConverter = new FormHttpMessageConverter();
HttpMessageConverter<?> stringHttpMessageConverternew = new StringHttpMessageConverter();
List<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>>();
converters.add(formHttpMessageConverter);
converters.add(stringHttpMessageConverternew);
restTemplate.setMessageConverters(converters);
return restTemplate;
}

public void setRestTemplate(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
}

但是当我运行它时出现了这个错误:

09/10/2013 10:10:32 AM org.springframework.web.client.RestTemplate handleResponseError
ADVERTENCIA: POST request for "[here the link in the code]" resulted in 400 (Bad Request); invoking error handler
Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 400 Bad Request
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:76)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:486)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:443)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401)
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:279)
at StatesAPI.foo(StatesAPI.java:20)
at StatesAPI.main(StatesAPI.java:15)

最佳答案

尝试对您的 getRestTemplate 进行这些修改:

public RestTemplate getRestTemplate() {
// TODO: Fix the RestTemplate to be a singleton instance.
restTemplate = (this.restTemplate == null) ? new RestTemplate() : restTemplate;

// Set the request factory.
// IMPORTANT: This section I had to add for POST request. Not needed for GET
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());

// Add converters
// Note I use the Jackson Converter, I removed the http form converter
// because it is not needed when posting String, used for multipart forms.
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

return restTemplate;
}

关于java - RestTemplate.postForObject - 错误 : org. springframework.web.client.HttpClientErrorException:400 错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19276190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com