마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드에서 서버로 데이터 송수신 관련 질문입니다.

0 추천

고수님들의 도움이 절실히 필요합니다.

안드로이드에서 서버로 데이터 송수신 관련 질문입니다.

전송하는 데이터 타입은 json입니다.

아래의 code로 서버로부터 데이터를 받아올 경우에는 문제가 없습니다.(get)

RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter());
  
String url = mServerURL.substring(0);
ResultEnvelopeTO envelop = restTemplate.getForObject(url, ResultEnvelopeTO.class);

그러나, 서버로 데이터를 저장할 경우, 400 Bad Request가 발행합니다. (post) 

public static ResultEnvelopeTO POST_TO(String userID, String resource, Object obj) {
                     int loop = sRetryCount;
 do {
  try {
   RestTemplate restTemplate = new RestTemplate();
   restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter());
       
   String url = mServerURL.substring(0);   
   ResultEnvelopeTO response =  restTemplate.postForObject(url, obj, ResultEnvelopeTO.class); 
   return response;
  } catch(org.springframework.web.client.ResourceAccessException e) {
   System.out.println(e.getMessage()); 
   if (e.getRootCause() instanceof java.net.SocketTimeoutException) {
    continue;
   }
    
   e.printStackTrace();
   break;
  } catch(RuntimeException x) {
   System.out.println(x.getMessage());
   x.printStackTrace();
   break;
                                          }
 } while(0 <= --loop);
 return null;
}

에러는 아래와 같이 나타납니다.

400 Bad Request
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:524)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:481)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:439)
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:317)
at com.lge.ifsda.android.provider.task.server.util.TaskUtils.testServerDAO_POST_TO(TaskUtils.java:138)
at com.lge.ifsda.android.provider.task.server.TaskSleepReportDate.setUserFeedbackList(TaskSleepReportDate.java:143)
at com.lge.ifsda.android.provider.task.file.TaskSleepReportDate.setUserFeedback(TaskSleepReportDate.java:295)
at com.lge.ifsda.android.provider.task.server.TaskSleepReportDate.tx(TaskSleepReportDate.java:41)
at com.lge.ifsda.android.provider.FSAnalyzerApplication$3.doInBackground(FSAnalyzerApplication.java:450)
at com.lge.ifsda.android.provider.FSAnalyzerApplication$FSAnalyzerAsyncTask.doInBackground(FSAnalyzerApplication.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
 

goslak 님이 2015년 1월 29일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...