这是我的代码,
$url= 'http://dummyhost:8080/admin/EditSubscriber?jsonString={"sub_Id":3,"sub_Fname":"messi","sub_Lname":"lionel"}';
$data_string="";
$request = new HTTPRequest($url, HTTP_METH_POST);
$request->setRawPostData($data_string);
$request->send();
$response = $request->getResponseBody();
$response= json_decode($response, true);
在url JSON字符串的末尾根据服务器要求连接
但作为回应,我没有得到任何响应变量。
这有什么问题,因为当我使用chrome扩展程序发出此请求时,它会显示更新的结果。当我使用$url= "http://dummyhost:8080/admin/ViewSubsriber?jsonString={"sub_Name":"messi","sub_Password":"password"}";
时
我得到了理想的结果。
我也使用curl'
我也像这样使用过Curl
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
curl_close($ch);
$json_result = json_decode($result, true);
但同样的结果我得到的是什么
答案 0 :(得分:1)
如果你自己创建了JSON字符串,请记住以下事项:
字符串中的空格可能会导致服务器出现不自然的行为,因此对于每个变量或至少使用字符串
urlecode(yourvariable);
然后在线chek字符串,JSON字符串有效或不是这样 http://json.parser.online.fr/
像布兰特说的那样使用$json = file_get_contents('php:://input');
表示原始数据,而不是使用空$data_string="";
答案 1 :(得分:0)
您发布的变量$ data_string为空。您正在使用POST并发送空数据,但随后还发送查询字符串。看来你在这里混合了GET和POST方法。您需要在发布的数据中实际发布JSON字符串。
如果您使用应用程序/ JSON内容类型发布原始JSON字符串,则需要从原始输入中读取帖子数据
$json = file_get_contents('php:://input');
这是因为$ _POST只能由PHP自动填充表单编码的内容类型。
我还建议坚持使用curl进行此类用法。