我正在尝试对以下 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'] 的值,它说我请求的是 GET 而不是 POST。问题是,我的 Apache 服务器的配置没有被触及,我显然在做一个 POST 请求。
似乎我的 HttpPost 没有发送任何 POST 变量,即使我应该通过 URL 对其进行编码。如果我只是用浏览器访问该页面,我也会得到 array(0) {},因为请求中没有任何 POST 变量。从昨天开始,我一直在尝试修改它,但我就是不知道我做错了什么。问题是什么?