次の PHP コードに対して Http リクエストを実行しようとしています。
<?php
var_dump($_POST);
?>
リクエストを送信するための Android Java コードは次のとおりです。
String stringURL = "http://*I EDITED OUT MY IP*/mediatheque_api";
List<NameValuePair> postVars = new ArrayList<NameValuePair>(2);
postVars.add(new BasicNameValuePair("req","listemedias"));
postVars.add(new BasicNameValuePair("no","12345"));
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(stringURL);
httpPost.setEntity(new UrlEncodedFormEntity(postVars));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
if (httpEntity != null){
System.out.println("Not Empty");
String responseBody = EntityUtils.toString(httpEntity);
System.out.println(responseBody);
} else {
System.out.println("Empty");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
LogCat に出力される内容は次のとおりです。
07-04 17:13:15.274: I/System.out(20547): Not Empty
07-04 17:13:15.274: I/System.out(20547): array(0) {
07-04 17:13:15.274: I/System.out(20547): }
コメントで示唆されているように、$_SERVER['REQUEST_METHOD'] の値をエコーしました。POST ではなく GET を要求していると表示されます。問題は、Apache サーバーの構成が変更されておらず、明らかに POST 要求を行っていることです。
URLを介してエンコードしていると思われますが、HttpPostはPOST変数を送信していないようです。単純にブラウザーでページに移動すると、リクエストに POST 変数がないため、array(0) {} も取得されます。昨日からいじってみましたが、何が間違っているのかわかりません。どうした?