大家好我已经向php服务器发送了一个JSON对象。我的json如下 -
{"cart_detail":{"product_id":"66922","ref_id":"chand09","user_id":"1"}}
我通过以下代码发送JSON -
public void postData(String result,JSONObject obj) {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpParams myParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(myParams, 10000);
HttpConnectionParams.setSoTimeout(myParams, 10000);
System.out.println(" before JSON string");
String json=obj.toString();
try {
HttpPost httppost = new HttpPost(result.toString());
httppost.setHeader("Content-type", "application/json");
System.out.println("After httpost header");
StringEntity se = new StringEntity(obj.toString());
System.out.println(" sending json string"+se);
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
httppost.setEntity(se);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
String temp = EntityUtils.toString(response.getEntity());
System.out.println(" i am getting response entity "+entity);
Log.i("tag", temp);
System.out.println(" item send sucessfully to cart by server");
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
}
我处理响应的PHP是 -
$data = array("cart_details" => array($_REQUEST));
echo "<pre>";
print_r($data);
echo "</pre>";
作为回应我得到了堆栈 - 跟踪如下 -
07-26 14:57:45.124: I/System.out(7191): i am getting response entity org.apache.http.conn.BasicManagedEntity@405d2fd0
07-26 14:57:45.124: I/System.out(7191): i am getting response string org.apache.http.impl.client.ClientParamsStack@405134a8
07-26 14:57:45.124: I/tag(7191): <pre>Array
07-26 14:57:45.124: I/tag(7191): (
07-26 14:57:45.124: I/tag(7191): [cart_details] => Array
07-26 14:57:45.124: I/tag(7191): (
07-26 14:57:45.124: I/tag(7191): [0] => Array
07-26 14:57:45.124: I/tag(7191): (
07-26 14:57:45.124: I/tag(7191): )
07-26 14:57:45.124: I/tag(7191): )
07-26 14:57:45.124: I/tag(7191): )
07-26 14:57:45.124: I/tag(7191): </pre>
07-26 14:57:45.124: I/System.out(7191): item send sucessfully to cart by server
我不知道发生了什么问题。我是json的新手。我将如何检查我的请求是否正常。作为回应我收到同样的json,但为什么这个json是空的?它是android部分还是PHP Server的错误。提前感谢所有人。
答案 0 :(得分:1)
您正在发送JSON编码的POST正文,因此您必须从输入流中读取:
$data = array("cart_details" => json_decode(file_get_contents('php://input')),
echo "<pre>";
print_r($data);
echo "</pre>";
$ _REQUEST和$ _POST数组只会填充urlencoded表单数据。
答案 1 :(得分:-1)
您必须在PHP中解码JSON字符串,以便在PHP中正确理解
$data = json_decode($_REQUEST);
echo '<pre>' . print_r($data, true) . '</pre>';
我希望json数据作为命名数组项传递给PHP $ _RESUEST / $ _ POST / $ _ GET数组。 可能值得print_r'整个$ _REQUEST数组,以查看它的第一个被调用的函数。
echo '<pre>' . print_r($REQUEST, true) . '</pre>';
然后将正确的数组项添加到原始转储
$data = json_decode($_REQUEST['array_item_name']);
echo '<pre>' . print_r($data, true) . '</pre>';