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?