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

안드로이드에서 JSONObject를 Post로 보냈을 때 질문

0 추천

다음과 같이 POST로 JSONObject를 서버로 전송합니다.

 

// 1. create HttpClient

HttpClient httpclient = new DefaultHttpClient();

 

// 2. make POST request to the given URL

HttpPost httpPost = new HttpPost(url);

String json = "";

 

// 4. convert JSON to String

json = jsonObject.toString();

 

Log.d("json", "json: "+json);

// 5. set json to StringEntity

StringEntity se = new StringEntity(json);

// 6. set httpPost Entity

httpPost.setEntity(se);

 

// 7. Set some headers to inform server about the type of the content

httpPost.setHeader("Accept", "application/json");

httpPost.setHeader("Content-Type", "application/json");

 

// 8. Execute POST request to the given URL

HttpResponse httpResponse = httpclient.execute(httpPost);

 

 

JSONObjcet는 테스트를 위해서 아래와 같은 오브젝트가 전송 되었다고 했을 때..

jsonObject.accumulate("timeStamp", "time");

jsonObject.accumulate("id", "test");

 

JSP 서버에서 받은 데이터를 확인해보려 하는데,

간단하게 request.getParameter("id") 로 시도해보면 null이 나오고

<%

String recv;

String recvbuff = "";
BufferedReader buffread = new BufferedReader(new InputStreamReader(request.getInputStream()));
while ((recv = buffread.readLine()) != null)
        recvbuff += recv;
        
application.log("receive data: "+recvbuff);
buffread.close();

%>

위와 같이 하여도 recvbuff는 ""가 나옵니다..

이렇게 하면 전송된 오브젝트를 얻을 수 있는지 조언 부탁드립니다..

감사합니다!

 

konori (530 포인트) 님이 2015년 1월 7일 질문

1개의 답변

0 추천
저는 이런 경우 문제의 원인을 좁히기 위해 패킷을 직접 한번 봅니다.

에뮬레이터에서 테스트(PC의 이더넷을 통과하기 때문) 하시면 WireShark같은 패킷 스니퍼링툴로 쉽게 알아 볼 수 있습니다.

x86 이미지 쓰시면 예전 arm 에뮬레이팅에 비해 많이 빠릅니다.

디바이스에서도 가능하나 PC(무선랜이 가능)를 AP로 만들어야 하는 과정이 있어서... 좀 귀찮습니다.

 

WireShark 에서 필터로 HTTP를 지정하면 HTTP관련 패킷만 깔끔하게 보여줍니다.

이것만으로도 클라이언트가 문제인지 서버쪽이 문제인지 판단이 되죠...
neokii (1,280 포인트) 님이 2015년 1월 7일 답변
...