2017-01-28 83 views
2

我正在一个项目上工作。其中我从android或iOs应用程序获取json字符串格式的数据。我正在使用json解码来解码它。但我没有得到任何数组。如何解码json字符串?

ioS和Android通过URL调用URL并通过REQUEST模式传递数据。网址如下:

http://dummy.test.pro/webservices/Cart/AddToCartMatrix?{ "Add_Cart" = "{\n \"product_id\" : \"30\",\n \"user_id\" : \"67\",\n \"design_inventory\" : \"design_master\",\n \"table\" : \"temp_cart\"\n}"; } 

在PHP中,我读的数据如下:

$cart_data = json_decode(stripslashes($_REQUEST['Add_Cart'])); 
pre($cart_data); 

但URL呼叫后,我收到以下错误:

消息:未定义指数:Add_Cart

请帮我解决这个问题。提前致谢。

回答

0

这意味着Add_Cart不是您的$ _REQUEST数组中的索引。

为什么不使用类似print_r($_REQUEST)的内容来检查请求的内容?

+0

。 –

0

我不确定你是如何发送请求,但处理请求的,但我想改变你如何从发送请求的URI。

http://dummy.test.pro/webservices/Cart/AddToCartMatrix?{ "Add_Cart" = "{\n \"product_id\" : \"30\",\n \"user_id\" : \"67\",\n \"design_inventory\" : \"design_master\",\n \"table\" : \"temp_cart\"\n}"; } 

到:

http://dummy.test.pro/webservices/Cart/AddToCartMatrix?Add_Cart=%7B%5Cn+%5C%22product_id%5C%22+%3A+%5C%2230%5C%22%2C%5Cn+%5C%22user_id%5C%22+%3A+%5C%2267%5C%22%2C%5Cn+%5C%22design_inventory%5C%22+%3A+%5C%22design_master%5C%22%2C%5Cn+%5C%22table%5C%22+%3A+%5C%22temp_cart%5C%22%5Cn%7D 

了解更多关于为什么这可能工作here

works ​​

在我自己的测试,这种方法可行。确保为JSON调用一些URL编码函数,并将Add_Cart作为json的变量名称。 (在JSON没有包装它,因为它)

0

此的iOS/Android应用程序在发送不使用任何已知的或有效的查询字符串格式相当错误的URL。这意味着你不能依靠PHP将它解码为$_GET$_REQUEST

除非你能联系应用创造者得到它固定的,你必须从URL中提取的原始数据(如GET):

$json = $_SERVER['QUERY_STRING'] 

...或请求主体(如POST ):

$json = file_get_contents("php://input"); 

但是,它仍然是可能的(我说很可能)数据已经被损坏了交通和进一步json_decode()失败。如果是这样,你需要额外的字符串替换,试图把它固定。

0

尝试这个

http://dummy.test.pro/webservices/Cart/AddToCartMatrix?Add_Cart={\n \"product_id\" : \"30\",\n \"user_id\" : \"67\",\n \"design_inventory\" : \"design_master\",\n \"table\" : \"temp_cart\"\n} 

如果我写的print_r($ _ REQUEST),然后我得到的数据你可能会错过get方法关键