0

我正在尝试对以下 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 变量。从昨天开始,我一直在尝试修改它,但我就是不知道我做错了什么。问题是什么?

4

1 回答 1

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/。我忘了加上最后的斜线。它现在工作正常。

于 2013-07-04T22:45:28.733 回答