지금 안드로이드를 공부를 하고 있는데 서버 통신을 다룰줄 아는게 php로 json으로 통신이라
안드로이드에서 http로 서버와 json 형식으로 통신을 하려고 합니다.
get 방식으로 url형식으로 값을 넘길때는 잘 넘어가고 값도 잘 넘어오는 것을 확인해서
이번에 post로 값을 넘기려니 오류는 전혀 안나는데 그냥 php에서 $_POST 변수가 텅 비어있네요
아래 코드 JOSNObject에서 String으로 뽑을 때 완벽히 json 문자열 형식으로 뽑히는 거 확인했습니다.
그냥 제가 느끼기에는
os.write(param.toString().getBytes("UTF-8"));
이 부분이 안드로이드가 값을 못 날리는지, 서버가 받아도 팅기는지 전혀 알 수 없네요
블로그 같은 곳은 난 이코드로 잘 전송 됬다. 이런 느낌인데
다방면으로 코드 테스트 해봐도 저 줄 외엔 의심을 할 수가 없고, 저 줄을 더이상 어떻게
디버깅을 해야할지 감이 안오네요... 이런 경우 흔히 겪어볼만할 것 같은데 님들은 이런 경우 없었던가요?
public static JSONObject POST(String url, JSONObject param)
{
JSONObject result = null;
try{
URL urlCon = new URL(url);
HttpURLConnection httpCon = (HttpURLConnection)urlCon.openConnection();
httpCon.setRequestProperty("Accept","applecation/json");
httpCon.setRequestProperty("Content-type","application/json");
httpCon.setDoOutput(true);
httpCon.setDoInput(true);
OutputStream os = httpCon.getOutputStream();
os.write(param.toString().getBytes("UTF-8"));
os.flush();
try {
InputStream is = httpCon.getInputStream();
if(is != null)
try {
StringBuffer sb = new StringBuffer();
byte[] b = new byte[4096];
for (int n; (n = is.read(b)) != -1;) {
sb.append(new String(b, 0, n));
}
result = new JSONObject(sb.toString());
}
catch (JSONException e) { e.printStackTrace();}
}
catch (IOException e) { e.printStackTrace(); }
finally { httpCon.disconnect(); }
} catch (MalformedURLException e){ e.printStackTrace();
} catch (IOException e){ e.printStackTrace();}
return result;
}