q84629462
V2EX  ›  Android

Android 使用 Loopj 的 AsyncHttpClient 发起 post, PHP 输出$_POST 和$_SERVER 都看不到参数,实在找不出问题所在,特来发问。

  •  
  •   q84629462 · Jan 29, 2015 · 15873 views
    This topic created in 4166 days ago, the information mentioned may be changed or developed.
    java:
    RequestParams params = new RequestParams();
    String[] colors = { "blue", "yellow" }; // Ordered collection
    params.put("colors", colors);
    Log.d("params", params.toString());
    http.put(url, params, jsonHandler);
    //jsonHandler是Loopj的BaseJsonHttpResponseHandler
    php:
    <?php
    var_dump($_POST);
    var_dump($_SERVER);
    exit;
    ?>

    java中的log输出,是标准的参数格式:
    params﹕ colors[]=blue&colors[]=yellow

    PHP中输出(其实是java中的jsonHandler也有输出):
    array(0) {
    }
    $_SERVER数组太长了,不列出,见谅。
    但$_SERVER ["REQUEST_METHOD"]是POST

    AsyncHttpClient v1.4.4和v1.4.6都试过,PHP均无法接收到post的数据。
    有两台Android设备用于测试,情况都一样,php接收不到post参数。
    但是随便写个html form post到同一个php文件,php都可以输出post的数据
    Android项目有<uses-permission android:name="android.permission.INTERNET" />权限
    也试过params.add("a","a")随便add个字符参数,php也接收不到。
    实在找不出问题在哪,头都大了。。。
    服务器是LNMP环境,也试过重启Nginx,情况依旧。
    前几个Android项目也是这样用AsyncHttpClient post数据到php的,但这次遇到这问题真奇葩了,求解!
    huijiewei
        1
    huijiewei  
       Jan 29, 2015
    查 Content-Type 了没?
    cevincheung
        2
    cevincheung  
       Jan 29, 2015   ❤️ 1
    echo file_get_contents('php://input');


    试试呢
    huijiewei
        3
    huijiewei  
       Jan 29, 2015   ❤️ 1
    补充说明下,POST 就是 POST ,不要用 PUT
    q84629462
        4
    q84629462  
    OP
       Jan 29, 2015
    @huijiewei
    //AsynchttpClient读取到的$_SERVER
    ["CONTENT_TYPE"]=>
    string(33) "application/x-www-form-urlencoded"
    ["HTTP_CONTENT_TYPE"]=>
    string(33) "application/x-www-form-urlencoded"
    ["HTTP_USER_AGENT"]=>
    string(62) "android-async-http/1.4.4 (http://loopj.com/android-async-http)"

    //随便写一个html form提交的$_SERVER
    ["CONTENT_TYPE"]=>
    string(33) "application/x-www-form-urlencoded"
    ["HTTP_CONTENT_TYPE"]=>
    string(33) "application/x-www-form-urlencoded"
    ["HTTP_USER_AGENT"]=>
    string(120) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36"

    目测这里没有问题


    @cevincheung
    使用echo file_get_contents('php://input');可以看到参数诶,但var_dump($_POST);依然是array(0) {}
    这是什么问题?
    q84629462
        5
    q84629462  
    OP
       Jan 29, 2015
    @huijiewei 那个是手误输入错了,原来是这个问题啊,我擦嘞。。。
    q84629462
        6
    q84629462  
    OP
       Jan 29, 2015
    @huijiewei 其实我之前的项目也是用post的,可能没想到还有put这个方法,没细看,输入个p就按代码提示功能走了。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3002 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 09:02 · PVG 17:02 · LAX 02:02 · JFK 05:02
    ♥ Do have faith in what you're doing.