Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cURL在航站楼&x2014工作;PHP json中的错误_Php_Json_Curl - Fatal编程技术网

cURL在航站楼&x2014工作;PHP json中的错误

cURL在航站楼&x2014工作;PHP json中的错误,php,json,curl,Php,Json,Curl,我查看了所有其他终端与PHP的问题,没有找到解决方案 我正在使用data API,它用于检索文件列表: 翻译中我遗漏了什么 PHP CODE: $url = 'https://api-url'; $data = array( 'header' => array( 'id' => '1', ), 'others' => array( "details" => yes, ), ); $data_stri

我查看了所有其他终端与PHP的问题,没有找到解决方案

我正在使用data API,它用于检索文件列表:

翻译中我遗漏了什么

PHP CODE:
$url = 'https://api-url';
$data = array(
    'header' => array(
        'id' => '1',
    ),
    'others' => array(
        "details" => yes,
    ),    
);

$data_string = json_encode($data);                                                                                 


$ch = curl_init($url);                                                                      
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string))                                                                       
);                                                                                                                   

$result = curl_exec($ch);
var_dump($result);
终端代码:(工作正常)

尝试为ssl添加

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
此外,您还需要检查API主机并发送数据,因为它会出现以下错误:-

"{"result":"failed","errorMessage":"expected HTTP authorization, \"client_id\" property, or \"integration\" property","errorCode":"system.error"}" 

1) 您忘了翻译
--用户
选项。它在PHP libcurl中的对应项是
CURLOPT_USERPWD
option

2) 正如在评论中所写,您必须通过将
CURLOPT_SSL\u VERIFYPEER
选项设置为
false
来禁用SSL对等验证

3) 您不应该同时设置
CURLOPT_CUSTOMREQUEST
CURLOPT_POST
选项,只能设置其中一个(
CURLOPT_POST

因此,代码应该如下所示:

...
$ch = curl_init($url);
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_USERPWD => 'username/password',
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => $data_string,
    CURLOPT_HTTPHEADER => array(
        'Content-Type:application/json',
        'Content-Length: ' . strlen($data_string)
    ),
));
$result = curl_exec($ch);
var_dump($result);

我怀疑https问题,请检查您是否忘记翻译
--user
选项:
curl\u setopt($ch,CURLOPT\u USERPWD,'4vdesucr5xconxetjtxvekjhozz5fghctdlsrnifrm:lkjS7@ZXmv3');它不是SSL。如果是SSL,则更可能是中间人攻击——一家严肃的公司总是提供有效的SSL证书。此外,您不应在问题中公开发布私钥或凭据信息(如果是这种情况)。@Ketan我忘记在最终代码中添加
CURLOPT_USERPWD
选项。请参阅更新的答案
...
$ch = curl_init($url);
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_USERPWD => 'username/password',
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => $data_string,
    CURLOPT_HTTPHEADER => array(
        'Content-Type:application/json',
        'Content-Length: ' . strlen($data_string)
    ),
));
$result = curl_exec($ch);
var_dump($result);