2013-06-06 2 views
0

문제봄 - 안드로이드 RestTemplate 포스트가 실패

내가 spring-android에 기존의 HTTP POST 메서드를 변환 생각하고 있지만 실패했습니다.

JSONObject defaultJsonObject = new JSONObject(); 
defaultJsonObject.put("ln", "Kiat"); 
defaultJsonObject.put("CountryName", "Malaysia"); 
defaultJsonObject.put("CityName", "Kuala Lumpur"); 

이 작동하고 기존 HTTP 게시하고 같은 게시물 본문 형성됩니다 [json={"ln":"Kiat","CountryName":"Malaysia","CityName":"Kuala Lumpur"}]

List<NameValuePair> postParams = new ArrayList<NameValuePair>(); 
postParams.add(new BasicNameValuePair("json", jsonObject.toString())); 
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postParams); 
System.out.println("post param: " + postParams.toString()); 
post.setEntity(entity); 
post.setHeader("Accept", "application/json"); 

을하지만 난을 변환 할 때 봄 - 안드로이드 RestTemplate으로는 실패했습니다. 심지어 이미 나는이

[JSON = { "LN"같은 것 (500) 내부 서버 오류

HttpHeaders requestHeaders = new HttpHeaders(); 
requestHeaders.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); 
List<NameValuePair> postParams1 = new ArrayList<NameValuePair>(); 
postParams1.add(new BasicNameValuePair("json", jsonObject.toString())); 
HttpEntity<?> requestEntity = new HttpEntity<Object>(postParams1, requestHeaders); 
RestTemplate restTemplate = new RestTemplate(); 
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory()); 
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity,String.class) 

게시물 본문 형식가 계속 [json={"ln":"Kiat","CountryName":"Malaysia","CityName":"Kuala Lumpur"}]으로 게시물 본문 형성하기 위해 관리 "Kiat를" "COUNTRYNAME": "말레이시아", "CityName이": "쿠알라 룸푸르"}]

+0

응답이 500이면 내부 오류로 인해 서버가 충돌하고 있음을 의미합니다. 그걸 파기 할 수 있니? 나쁜 데이터를 보내고있는 것일 수도 있지만 서버 크래시 세부 정보가 없으면 문제가 무엇인지 알기가 어렵습니다. – gunar

+0

이것은 서버 측 오류 메시지입니다. 값은 null 일 수 없습니다. 매개 변수 이름 : System.Web.Script.Serialization.JavaScriptSerializer.Deserialize에서 입력 (JavaScriptSerializer serializer, 문자열 입력, 유형 유형, Int32 depthLimit) – guaz

+0

잘못된 내용을 보내는 것 같습니다 ... – gunar

답변

0

(.. 질문 편집 커뮤니티 위키 답변에 변환에 답변 Question with no answers, but issue solved in the comments (or extended in chat)보기)

영업 썼다 :

문제가 해결되었습니다. 해결 방법 :

RestTemplate을 사용하려면 어떤 변환기가 필요한지 확실하지 않으면 생성자에서 TRUE를 설정해야합니다. RestTemplate restTemplate = new RestTemplate(true); 여기에는 모든 표준 변환기가 포함됩니다. 그러나 원하지 않는 변환기를 모두 포함해야하기 때문에 낭비와 비슷합니다. 내 경우를 들어

, 테스트 후, 나는

restTemplate.getMessageConverters().add(new FormHttpMessageConverter()); 
restTemplate.getMessageConverters().add(new StringHttpMessageConverter()); 

나는 우리가 컨버터의 조합을 필요 모르겠어요있는 내 HTTP 포스트의 성공을 위해 두 개의 컨버터를 필요로 발견; 어쩌면 누군가가 더 깊은 설명을하고 있을까요?

관련 문제