我收到以下异常org.springframework.web.client.HttpClientErrorException: 400 Bad Request
在此声明中final ResponseEntity<String> entity = restTemplate.getForEntity("http://localhost:12001/api/profiles/bymsisdn/0747894146", String.class);
但是我的回复成功了 curl url -X GET“http://localhost:8001/api/profiles/bymsisdn/0747894146”
额外说明:
resttemplate = new RestTemplate(); // No Headers or extra convertors added as I think it's not required because using curl works fine
答案 0 :(得分:1)
您可以使用requestbin来测试您的http客户端的执行情况。
我认为RestTemplate正在为您的服务器响应400 Accept
标头。所以您可能需要编辑您的请求标头:
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity<String> entity = new HttpEntity<String>(headers);
restTemplate.exchange("http://localhost:12001/api/profiles/bymsisdn/0747894146", HttpMethod.GET, entity, String.class);
请注意,这是一个尝试性的解决方案,适应您的服务器。
答案 1 :(得分:0)
curl在未指定时使用 / 作为Accept标头。如果您没有指定accept标头,则使用RestTemplate,它会尝试为您的响应类型(在您的情况下为String)中找到合适的MIME类型。对于String类,取决于您的配置,可以匹配text / * MIME类型,这些类型可能与目标端点生成的类型不匹配。
尝试使用RestTemplate的交换重载方法明确指定需要处理的内容类型
答案 2 :(得分:-2)
final String uri = http://localhost:8088/myapp/ {data}“;
RestTemplate restTemplate = new RestTemplate();
MyResponse result = restTemplate.getForObject(uri,MyResponse.class,valData);