【问题标题】:Android HttpPost does not send POST values at allAndroid HttpPost 根本不发送 POST 值
【发布时间】:2013-07-04 21:23:19
【问题描述】:

我正在尝试对以下 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): }

正如 cmets 中所建议的,我回应了 $_SERVER['REQUEST_METHOD'] 的值,它表示我请求的是 GET 而不是 POST。问题是,我的 Apache 服务器的配置没有被触及,我显然在做一个 POST 请求。

我的 HttpPost 似乎没有发送任何 POST 变量,即使我应该通过 URL 对其进行编码。如果我只是用浏览器访问该页面,我也会得到 array(0) {},因为请求中没有任何 POST 变量。从昨天开始,我一直在尝试修改它,但我就是不知道我做错了什么。有什么问题?

【问题讨论】:

  • 检查帖子是否正在执行 - $_SERVER['REQUEST_METHOD'] 显示什么?
  • 你去。如果正在执行 GET,您将永远不会在 $_POST 中获得任何值。但是,您正在代码中设置帖子,因此请确保没有可能将您的帖子转换为获取的重定向或其他事情发生。
  • 重定向?如何?我还没有触及 Apache 配置文件。当我使用浏览器访问该页面时,我也会得到一个“GET”。
  • hurl.it测试你的php脚本,看看它是否正常工作。
  • 当您不确定请求类型时,您还可以在 php 脚本中使用 $_REQUEST 数组 - 它由来自 $_POST、$_GET 和 $_COOKIE 的变量组成。

标签: java php android httprequest


【解决方案1】:

我发现我的代码有什么问题。特别是这一行:

String stringURL = "http://*I EDITED OUT MY IP*/mediatheque_api";

我从未正确指向包含 index.php 文件的目录,因此导致 HTTP/1.1 301 Moved Permanently 响应,这会将我重定向到 http://我编辑了我的 IP /mediatheque_api/。我忘了加上最后的斜线。现在可以正常使用了。

【讨论】:

    猜你喜欢
    • 2013-05-12
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多