将android JSONObject发布到PHP的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了将android JSONObject发布到PHP的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3265字,纯文字阅读大概需要5分钟。
内容图文
![将android JSONObject发布到PHP的问题](/upload/InfoBanner/zyjiaocheng/764/6f610a37c4bb496a94d7ed48fb0002da.jpg)
我无法获得一个简单的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");
}
}
}
如果你喜欢,这是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;
?>
解决方法:
从我所看到的,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));
PHP中的原始后期数据访问:
$json = file_get_contents('php://input');
内容总结
以上是互联网集市为您收集整理的将android JSONObject发布到PHP的问题全部内容,希望文章能够帮你解决将android JSONObject发布到PHP的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。