Android用にプログラミングしてからしばらく経ちましたが、問題が発生しているコードが含まれていた以前の作業をすべて失いました。同じサーバーに接続してデータをダウンロードする Android と iPhone の両方のアプリを開発しています。iPhone 版ではすべて問題ありませんが、Android では、サーバーで実行したいメソッド名を含む投稿データをサーバーにヒットすると、データがリクエストに追加されないようです。
Android ではこのリクエストで POST が機能しないのに、アプリの iPhone バージョンでは機能するのはなぜですか?
私が使用しているコードは次のとおりです。
public static void makeRequest() throws Exception {
Thread t = new Thread() {
public void run() {
Looper.prepare(); //For Preparing Message Pool for the child Thread
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000);
HttpResponse response;
HttpEntity entity;
JSONObject json = new JSONObject();
try {
HttpPost post = new HttpPost("http://divisi.co.uk/rest/requesthandler.php");
json.put("method", "getEventListData");
StringEntity se = new StringEntity(json.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
post.setEntity(se);
response = client.execute(post);
entity = response.getEntity();
String retSrc = EntityUtils.toString(entity);
JSONObject result = new JSONObject(retSrc); //Convert String to JSON Object
if(result.getString("SC") == "200"){
JSONArray data = result.getJSONArray("data");
}
else{
}
} catch(Exception e) {
e.printStackTrace();
}
Looper.loop(); //Loop in the message queue
}
};
t.start();
}
サーバーからの応答は次のとおりです。
{"data":{"scalar":""},"SC":405,"timestamp":1363788265}
メソッド名が見つからなかったことを意味します。つまり、サーバーへのリクエストに投稿されていません。