将android JSONObject发布到PHP的问题

将android JSONObject发布到PHP的问题,第1张

概述我无法获得一个简单的JSONObject的androidPOST,以显示在服务器上的$_POST数据中.服务器是PHP5.3.4,android端是SDK8模拟器.我可以像往常一样发布一个简单的NameValuePair,但是当我切换到你在下面看到的JSONObjectStringEntity时,$_POST数组显示{}.继续在我的测试php页面上运行

我无法获得一个简单的JSONObject的androID POST,以显示在服务器上的$_POST数据中.服务器是PHP 5.3.4,androID端是SDK 8模拟器.我可以像往常一样发布一个简单的nameValuePair,但是当我切换到你在下面看到的JsONObject StringEntity时,$_POST数组显示{}.继续在我的测试PHP页面上运行下面的代码.它有一个$_POST和$_SERVER的var_dump,以及搜索其中一个预期的键(’email’).你会看到我尝试了很多’ContentType’,看看是不是问题.我甚至使用WireShark来验证客户端和服务器之间的TCP会话是否正常. POST数据在那里,但它没有显示在服务器的变量中.我被困了…感谢您提供的任何帮助.

import java.io.inputStream;import org.apache.http.httpResponse;import org.apache.http.clIEnt.httpClIEnt;import org.apache.http.clIEnt.methods.httpPost;import org.apache.http.entity.StringEntity;import org.apache.http.impl.clIEnt.DefaulthttpClIEnt;import org.apache.http.params.httpconnectionParams;import org.Json.JsONObject;import androID.util.Log;public class TestPOST {    protected static voID sendJson (final String email, final String pwd) {        httpClIEnt clIEnt = new DefaulthttpClIEnt();        httpconnectionParams.setConnectionTimeout(clIEnt.getParams(), 10000); //Timeout limit        httpResponse response;        String URL = "http://web-billings.com/testPost.PHP";        try{            httpPost post = new httpPost(URL);            // nameValuePair That is working fine...            //List<nameValuePair> nameValuePairs = new ArrayList<nameValuePair>(2);              //nameValuePairs.add(new BasicnameValuePair("email", email));              //nameValuePairs.add(new BasicnameValuePair("password", pwd));              //post.setEntity(new UrlEncodedFormEntity(nameValuePairs));            //Log.i("main", "P2DB - String entity 'se' = "+nameValuePairs.toString());            JsONObject jObject = new JsONObject();            jObject.put("email", email);            jObject.put("password", pwd);            StringEntity se = new StringEntity(jObject.toString());            //se.setContentType("charset=UTF-8");            se.setContentType("application/Json;charset=UTF-8");            //se.setContentType("application/Json");            //se.setContentType("application/x-www-form-urlencoded");            post.setEntity(se);            Log.i("main", "TestPOST - String entity 'se' = "+GetInvoices.convertStreamToString(se.getContent()));            response = clIEnt.execute(post);              /*Checking response */            if(response!=null){                inputStream in = response.getEntity().getContent(); //Get the data in the entity                String message = GetInvoices.convertStreamToString(in);                Log.i("main", "P2DB - Connect response = "+message);            }        }        catch(Exception e){            e.printstacktrace();            //createDialog("Error", "Cannot Establish Connection");        }    }}@H_301_7@

如果你喜欢,这是testPost.PHP页面:

<?PHP    echo "\r\n<pre>\r\n";    var_dump("$_POST = ", $_POST)."\r\n";    echo '$_POST[\'email\'] = '.$_POST['email']."\r\n";    var_dump("$_SERVER = ", $_SERVER)."\r\n";    echo '</pre>';    dIE; ?>  @H_301_7@

解决方法:

从我所看到的,httpPost.setEntity设置请求的主体,没有任何名称/值配对,只是原始的帖子数据. $_POST不查找原始数据,只查找名称值对,它将转换为哈希表/数组.您有两个选择…要么处理原始发布数据,要么格式化请求以使其包含名称值对.

AndroID / Java,名称值对示例:

httpClIEnt httpclIEnt = new DefaulthttpClIEnt();  httpPost httppost = new httpPost("http://web-billings.com/testPost.PHP");  List<nameValuePair> nameValuePairs = new ArrayList<nameValuePair>(2);  nameValuePairs.add(new BasicnameValuePair("Jsondata", se));  httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  @H_301_7@

PHP中的原始后期数据访问:

$Json = file_get_contents('PHP://input');@H_301_7@          总结       

以上是内存溢出为你收集整理的将android JSONObject发布到PHP的问题全部内容,希望文章能够帮你解决将android JSONObject发布到PHP的问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1120110.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存