我有这种方法,我尝试向POST
正文发送json
请求:
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。
答案 0 :(得分: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);
请在https://requestb.in/13zghda1?inspect上查看回复 在后端,您将获得现在的数据
答案 1 :(得分:0)
尝试使数据看起来像这样:
$post = [
'username' => 'user1',
'password' => 'passuser1',
'gender' => 1,
];
答案 2 :(得分:0)
如果你想发布一个数组($ data),试试这个:
$data = ['apple' => 'fruit', 'turnip' => 'vegetable'];
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
答案 3 :(得分:0)
因此,在花了两天时,结果是,在调用此方法时,我传递的是第三个参数(标题),一个令牌,在其末尾有一个\n
(错误地),由于该字符,请求正在被截断。
我不知道为什么,但删除了\n
修复了它。
所以将来如果有人遇到你的情况
卷曲请求正文未被发送或被截断
然后
查看不应该存在的特殊字符的请求标头。