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

android(client)와 spring(server) 간 통신 중 http status가 자꾸 406이 나옵니다. 도와주세요.

–1 추천

JSON 으로 안드로이드/스프링 간 통신을 하고 있는데,

현재 안드로이드에서 서버로 통신, 서버에서 DB까지 통신해서

값을 받아오는 부분까지는 성공했는데,

HttpResponse를 받아오는 부분에서 자꾸 httpstatus가 406이 나면서

메세지를 못받아오고 있습니다.

 

현재 안드로이드 부분 코드는 

======================================================

 

전략....

 

 

client = new DefaultHttpClient();

HttpConnectionParams.setConnectionTimeout(client.getParams(), 30000);

String phone = tMgr.getLine1Number();

if(!(phone.startsWith("+82"))){

phone = phone.replace("+82", "0");

Log.i("USERINFO", "받아온 전화번호는............." + phone);

}

//HttpPost 초기화 문제 

post = new HttpPost(arg0[0]);

try{

JSONObject jobj = new JSONObject();

jobj.put("type", "login");

jobj.put("phone", phone);

StringEntity entity = new StringEntity(jobj.toString(), HTTP.UTF_8);

Log.i("USERINFO", "서버로 전송할 JSON Object....." + jobj.toString());

entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,"application/json"));

Log.i("USERINFO", "HTTP에 Posting한 Entity....." + entity);

post.setEntity(entity);

// client.execute(post);

reps = client.execute(post);

reps.getStatusLine().getStatusCode();

Log.i("USERINFO", "resp..................................." + reps.getStatusLine().getStatusCode());

 

후략.....

=================================================================

 

입니다. 제 생각에는 저 reps.getStatus().getCode() 부분이 200이 나와야 할 것 같은데

자꾸 406(받아들일 수 없는 헤더 정보) 오류가 나네요..ㅜㅜ

사실, 저는 안드로이드 쪽 보다 서버쪽에 문제가 있다고 생각하는데요..

혹시 서버 쪽도 문제가 있는지 검사 부탁드립니다.

코드는 에러 없이 정상 작동하는데 에이치티티피 부분이 406이네요.

 

 

===================================================================

전략....

 

 

@RequestMapping(value="/mem.json", headers="Accept=application/json",

produces= {MediaType.APPLICATION_JSON_VALUE}, method = RequestMethod.POST)

public @ResponseBody Object checkMem(@RequestBody String phone) throws Exception{

System.out.println("들어왔음.");

JSONObject jObj = JSONObject.fromObject(phone);

System.out.println("...............................안드로이드로부터 받은 메세지...." + jObj);

MemberVO vo = new MemberVO(jObj.get("phone").toString(), "hghg", 0, 0);

jObj = new JSONObject();

System.out.println(vo.getPhoneNum());

boolean result = memberservice.chaeckMember(vo);

 

 

jObj.put("result", result);

JSONArray jArr = JSONArray.fromObject(jObj);

jArr.add(result);

return jArr;

}

==============================================================

현재 boolean result까지는 문제없이 콘솔에 찍히는데 도무지 값이 안드로이드 쪽으로 

넘어가질 안네요. 저 HTTP 상태 문제만 해결되면 뭐라도 해보겠는데 답답하네요.

그럼 조언 기다리겠습니다~

 

 

 

 

kieth (130 포인트) 님이 2013년 4월 5일 질문

답변 달기

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