PHP Curl进行POST操作,为何有2次重复的请求,我只执行了一次啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP Curl进行POST操作,为何有2次重复的请求,我只执行了一次啊相关的知识,希望对你有一定的参考价值。

参考技术A 告诉你两个用于获得curl错误报告的函数
curl_errno可以获得错误码,当然也包括错误的http状态码
curl_error可以获得错误信息
具体用法参见php手册。为了能得到正确的错误信息,使用这两个函数之前请设定CURLOPT_FAILONERROR选项为true。

还要提醒你一点,注意curl_init是否执行成功
参考技术B 问题解决了吗?我也遇到同样问题了 参考技术C 问题解决了吗?我也遇到同样问题了

如何使用 PHP(cURL)中的 post 方法在正文中发送带有标头的 JSON 数据 [重复]

【中文标题】如何使用 PHP(cURL)中的 post 方法在正文中发送带有标头的 JSON 数据 [重复]【英文标题】:How to send JSON data in body with header using post method in PHP(cURL) [duplicate] 【发布时间】:2018-07-12 22:24:51 【问题描述】:

我尝试使用以下代码在 post 方法中使用 json 数据和标头常量类型发送请求:application/json

$ch_get = curl_init($url_get);
        $jsonData1_get_r = array(
            'customerMobileNo'=>'9040845440',
            'recipientMobileNo'=>'7008565316',
            'recipientName'=>'Name Test Test',
            'accountNo'=>'5928374737328009',
            'bankName'=>'HDFC',
            'accIfsc'=>'HDFC0002058',
            'transactionType'=>'IMPS',
            'amount'=>'100'
            );
        $jsonDataEncoded_get = json_encode($jsonData1_get_r);

        curl_setopt($ch_get, CURLOPT_POST, 1);
        curl_setopt($ch_get, CURLOPT_POSTFIELDS, $jsonDataEncoded_get);
        curl_setopt($ch_get, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
        curl_setopt($ch_get, CURLOPT_HTTPHEADER, array('Authorization: '.$token.''));
        curl_setopt($ch_get, CURLOPT_RETURNTRANSFER, TRUE);
        $result_get = curl_exec($ch_get);
        curl_close($ch_get);

当使用上面的代码时出现以下错误

不支持内容类型“application/x-www-form-urlencoded;charset=UTF-8”

【问题讨论】:

我不确定,但您是否尝试过在同一个数组中同时设置两个标题?从目前的使用方式来看,Content-Type 似乎被覆盖了。 类似curl_setopt($ch_get, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: '.$token)); I think you must look at here. 【参考方案1】:

您可以使用以下代码来实现您的目标

$jsonData1_get_r = array(
        'customerMobileNo'=>'9040845440',
        'recipientMobileNo'=>'7008565316',
        'recipientName'=>'Name Test Test',
        'accountNo'=>'5928374737328009',
        'bankName'=>'HDFC',
        'accIfsc'=>'HDFC0002058',
        'transactionType'=>'IMPS',
        'amount'=>'100'
        ); 

$jsonDataEncoded_get  = json_encode($jsonData1_get_r );
$ch_get = curl_init($url_get);
curl_setopt($ch_get, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch_get, CURLOPT_POSTFIELDS, $jsonDataEncoded_get );
curl_setopt($ch_get, CURLOPT_RETURNTRANSFER, true);    
curl_setopt($ch_get, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Authorization: ' . $token)                                                                       

);      

希望对你有帮助!!

感谢和问候

【讨论】:

以上是关于PHP Curl进行POST操作,为何有2次重复的请求,我只执行了一次啊的主要内容,如果未能解决你的问题,请参考以下文章

在 Linux 中使用 cURL 进行 HTTP POST 和 GET [重复]

php curl请求接口并获取数据

php如何避免刷新页面重复提交

php curl post提交数据

请教一个PHP CURL的POST提交遇到的问题

如何使用 PHP 和 cURL 转发 $_POST?