我正在尝试对以下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变量。我从昨天起就试图修补它,我只是想不通我做错了什么。有什么问题?
答案 0 :(得分:0)
我发现了什么对我的代码不起作用。特别是这一行:
String stringURL = "http://*I EDITED OUT MY IP*/mediatheque_api";
我从未正确指向包含index.php文件的目录,从而导致HTTP / 1.1 301 Moved Permanently响应,这会将我重定向到http:// I EDITED OUT MY IP / mediatheque_api /。我忘了添加最后的斜线。它现在工作正常。