Php 卷曲柱不工作(未发送主体)
我有这样一种方法,我试图用Php 卷曲柱不工作(未发送主体),php,json,laravel,curl,Php,Json,Laravel,Curl,我有这样一种方法,我试图用json正文发送POST请求: public function executePost($url, $theBody, $headers){ $data_string = '{"apple": "fruit", "turnip": "vegetable"}'; // hard coded for now
json
正文发送POST
请求:
public function executePost($url, $theBody, $headers){
$data_string = '{"apple": "fruit", "turnip": "vegetable"}'; // hard coded for now
\Log::info($data_string);
$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_merge($headers, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
));
$result = curl_exec($ch);
\Log::info($result);
}
在接收端,我没有得到我需要的数据:
\Log::info(\Input::all());
我什么也得不到,也就是一个空数组。我似乎不明白这是怎么回事
它在另一台使用WAMP的计算机上工作,我使用的是Ubuntu 16.04和PHP 5.6。尝试使数据如下所示:
$post = [
'username' => 'user1',
'password' => 'passuser1',
'gender' => 1,
];
请尽量这样通过
$data_string = '{"apple": "fruit", "turnip": "vegetable"}';
$ch = curl_init('http://requestb.in/13zghda1');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, array('data' => $data_string));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
请同时在上查看回复
在后端,您将立即获得数据如果要发布阵列($data),请尝试以下操作:
$data = ['apple' => 'fruit', 'turnip' => 'vegetable'];
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
因此,在花了两天的时间之后,在调用此方法时,我将其作为第三个参数(头)传递,这是一个标记,它的末尾有一个
\n
(错误地),由于该字符,请求体被截断
我不知道为什么,但是删除\n
修复了它
所以将来如果有人遇到这种情况,你的
未发送或截断curl请求正文
然后
查看您的请求头中不应该存在的特殊字符。我需要在curl请求中发送json输入。。curl post字段需要的是字符串而不是php数组。您需要使用json的头。首先将数组转换为json
$data\u string=json\u encode($data)代码>之后,您可以设置json`curl\u setopt($ch,CURLOPT\u HTTPHEADER,array('Content Type:application/json','Content Length:'。strlen($data\u string))的设置 ); `我正在这样做,请查看整个方法。您需要使用php输入法读取后端的内容`$jsonStr=file\u get\u contents('php://input"); //阅读HTTP正文$json=json_decode($jsonStr);`我使用了测试API Url&它似乎收到了原始数据。。还是空的。。问题出在发送端。。接收器工作正常。请向我们显示接收端代码好吗?请尝试使用$\u POST=json\u decode(file\u get\u contents(“php://input"(对),;及印刷版($);;it和var_转储($result);试过了,不起作用。因此,您要发送的$data_字符串首先请检查它,这是有效的json还是无效@MubasharAbbas为什么您严格要求发送json,而不是在接收端创建json?