我正在研究一个项目。其中我从android或iOs应用程序获取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 :(得分:0)
这意味着 Add_Cart 不是 $ _ REQUEST 数组中的索引。
为什么不使用print_r($_REQUEST)
之类的内容来检查您的请求内容?
答案 1 :(得分: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}"; }
为:
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
在我自己的测试中,这种方法有效。确保为JSON调用一些URL编码函数,并将Add_Cart作为json的变量名。 (不用它包装在JSON中)
答案 2 :(得分:0)
此iOS / Android应用程序发送的格式错误,不使用任何已知或有效的查询字符串格式。这意味着您不能依赖PHP将其解码为$_GET
或$_REQUEST
。
除非您可以与应用创建者联系以解决问题,否则您必须从网址获取原始数据(如果是GET):
$json = $_SERVER['QUERY_STRING']
...或请求正文(如果是POST):
$json = file_get_contents("php://input");
然而,仍有可能(我可能会说)数据在传输时已损坏,并且json_decode()
失败。如果是这样,你需要额外的字符串替换来尝试修复它。
答案 3 :(得分: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}
你可能错过了方法键