2015-09-04 11 views
1

Я работаю в Android-приложении, которое получает данные с сервера через службы REST.SpringFrameWork: 500 Внутренняя ошибка сервера

Теперь я должен сделать POST на службе REST с помощью Body. Но у меня проблема с этим. Я использую 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); 

Любая идея, почему я с этой проблемой ??

P.s. Я проверил многие вопросы, которые были похожи на меня, но ни в одном из них я не мог найти ответ. Я пытаюсь с некоторыми днями, но не могу понять, в чем проблема: @

+0

Как показывает ошибка, это 500 Internal Server Error. Таким образом, нам нужен код сервера, чтобы проверить, что с ним не так. –

+0

Я попробовал службу REST с помощью POSTMAN (Google ExtensioN), а также некоторые другие инструменты тестирования сервиса онлайн REST, и он отлично работал. Но здесь он не работает :( – user3774470

+0

вы можете вставить тело json, которое вы использовали для отправки запроса, а также ваш класс AllData –

ответ

0

Поскольку вы говорите, что работает от почтальона и других, я предполагаю, что это проблема с кодировкой или заголовками. Я думаю, что самым простым способом найти проблему будет использование прокси-сервера, такого как скрипач, и сравнить сравнение заголовков и данных, отправленных с устройства Android, на те, которые отправил почтальон или другой инструмент

1

Я был точно такой же проблемой, и мне удалось это решить. Приведя ваш пример, мне нужно было изменить тип объекта 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);