繁体   English   中英

从 Android 发送数据

[英]Sending data from Android

我想将数据从 Android 设备发送到 PHP。 我试过了,但我不知道我错在哪里。 我该如何纠正?

这是我做的Android代码。

public class php_connect extends Activity {
    InputStream is;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main1);
        JSONObject json = new JSONObject();
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://10.0.2.2/food/food.php");
            json.put("id",1);
            json.put("name","john");
            Log.i("jason Object", json.toString());
            httppost.setHeader("json", json.toString());

            StringEntity se = new StringEntity(json.toString());
            se.setContentEncoding("UTF-8");
            se.setContentType("application/json");
            httppost.setEntity(se);
            HttpResponse response = httpclient.execute(httppost);
            int statusCode = response.getStatusLine().getStatusCode();
            Toast.makeText(getApplicationContext(),String.valueOf(statusCode), Toast.LENGTH_SHORT).show();
            is = se.getContent();
            Log.e("log_tag", "connection success ");
            Toast.makeText(getApplicationContext(), "Successfully Connected", Toast.LENGTH_SHORT).show();
        }
        catch(Exception e){
            Log.e("log_tag", "Error in http connection "+e.toString());
            Toast.makeText(getApplicationContext(), "Fail to Connect", Toast.LENGTH_SHORT).show();
        }
    }
}

我得到响应为 200 并成功连接,但在 PHP 中看不到数据。

我的 PHP 代码是:

<?php
    $data = file_get_contents('php://input');
    $json = json_decode($data,true);
    var_dump($json);
    $id=$json['id'];
    echo $id;
?>

我总是得到 null 结果。

来自PHP 手册

在 POST 请求的情况下,它比 $HTTP_RAW_POST_DATA 更可取,因为它不依赖于特殊的 php.ini 指令。 此外,对于那些默认情况下不填充 $HTTP_RAW_POST_DATA 的情况,它可能是激活 always_populate_raw_post_data 的一种可能较少 memory 密集型的替代方案。 php://input 不适用于 enctype="multipart/form-data"

我认为将 JSON 编码为表单参数并使用普通的 PHP $_POST function 来阅读它会更容易:

List parameters = new ArrayList();
parameters.add(new BasicNameValuePair("jsonParam", json.toString())
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters)
httppost.setContentType("multipart/form-data");
httppost.setEntity(formEntity);   

在 PHP 方面,您可以简单地做

Got <?php echo $_POST["jsonParam"]; ?>!<br />

注意:我没有测试过上面的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM