Android HttpPost根本不发送POST值

时间:2013-07-04 21:23:19

标签: java php android httprequest

我正在尝试对以下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变量。我从昨天起就试图修补它,我只是想不通我做错了什么。有什么问题?

1 个答案:

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