CURL Post无法正常工作(正在发送正文)

时间:2017-04-19 12:00:58

标签: php json laravel curl

我有这种方法,我尝试向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。

4 个答案:

答案 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修复了它。

所以将来如果有人遇到你的情况

  

卷曲请求正文未被发送或被截断

然后

查看不应该存在的特殊字符的请求标头。