嗨,我正在创建一个Android应用程序。在我的应用程序中,我有一些表单字段,如edittext和单选按钮,我通过从所有表单字段中检索文本来创建JSONObject
。 JsonObject已成功创建。现在我想将这个对象传递给我的PHP页面,在那里我编写了用于获取此详细信息并将其存储在数据库中的代码。我的问题是我不了解如何通过httpPost
或httpGet
方法发送此JSON对象。我知道的唯一方法是通过List<NameValuePair>
发送参数,所以我试图将JSONObject转换为List<NameValuePair>
。任何人都可以提供一种方法,可以直接将我的JSONObject转换为List<NameValuePair>
。是否有任何预定义的方法来执行此操作。或者任何人都可以提供解决方案,我可以通过JSONObject直接发送到PHP并在那里检索。
答案 0 :(得分:1)
将JSONObject作为字符串传递给String Entity构造函数,然后将其传递给setEntity()
<强>示例:强>
HttpPost request = new HttpPost("//website");
StringEntity params =new StringEntity("passmyjson=" + yourJSONOBject.toString());
request.addHeader("content-type", "//header");
request.setEntity(params);
HttpResponse response = httpClient.execute(request);
在php文件中检查它是否有效;
<?php
print_r($_POST);
$json_string = $_POST['passmyjson'];
$json = json_decode($json_string);
print_r($json);
?>
答案 1 :(得分:1)
您可以使用Apache HttpClient执行此操作。我假设您已经有一个处理此请求的PHP处理程序。简单地说,
JSONObject
application/x-www-form-urlencoded
致电网址:http://your_php_service.com/handleJson;
HttpClient httpClient = new DefaultHttpClient();
JSONObject json = new JSONObject();
json.put("key", "val");
try {
HttpPost request = new HttpPost("http://your_php_service.com/handleJson");
StringEntity params = new StringEntity("json=" + json.toString());
request.addHeader("content-type", "application/x-www-form-urlencoded");
request.setEntity(params);
HttpResponse response = httpClient.execute(request);
} catch (Exception ex) {
} finally {
httpClient.getConnectionManager().shutdown();
}
请求参数的格式为;
json={"key": "val"}
你可以像php那样处理这个问题;
<?php
.....
$json = $_POST["json"]; // This will be json string
.....
答案 2 :(得分:1)
谢谢你,我得到了它
我将以下几行添加到我的android Activity类
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse httpResponse;
HttpPost httppost = new HttpPost(link); //-->link is the php page url
httppost.setEntity(new StringEntity(obj.toString())); //-->obj is JSONObject
httpResponse = httpClient.execute(httppost);
HttpEntity httpEntity = httpResponse.getEntity();
并在我的php文件中添加了以下代码
$msg=json_decode(file_get_contents('php://input'), true);
为了从收到的Json字符串中获取特定值,我添加了此$data = $msg['name'] ;
它正在运作