我正在开发一个通过 REST 服务从服务器获取数据的 Android 应用程序。
现在我必须使用 Body 在 REST 服务上进行 POST。但我这样做有问题。我正在使用 SPRINGFRAMEWORK 与 REST 服务进行通信。但是我有这个错误:
org.springframework.web.client.HttpServerErrorException: 500 内部服务器错误
这是我的发帖代码:
org.springframework.web.client.HttpServerErrorException: 500 内部服务器错误
final String url = "http://mywebsite.com/login";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Credentials> entity = new HttpEntity<>(credentials ,requestHeaders);
//the object "CREDENTIALS" has the valus that should be sent as BODY in the REST Service
为了发布我使用了两种方式,但都没有用:
ResponseEntity<AllData> response = restTemplate.exchange(url, HttpMethod.POST, entity, AllData.class);
或
ResponseEntity<AllData> response = restTemplate.postForEntity(url, entity, AllData.class );
知道我为什么会遇到这个问题吗?
附言我查了很多和我一样的问题,但没有一个能找到答案。几天以来我一直在尝试,但无法弄清楚问题是什么:@
最佳答案
我遇到了同样的问题,我设法解决了。以您的示例为例,我需要将 Credentials 实体类型更改为相同的 ResponseEntity 类型。会是这样的:
final String url = "http://mywebsite.com/login";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
AllData allData = new AllData();
HttpEntity<AllData> entity = new HttpEntity<>(allData, requestHeaders);
ResponseEntity<AllData> response = restTemplate.exchange(url, HttpMethod.POST, entity, AllData.class);
关于android - Spring 框架工作 : 500 Internal Server Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32387242/