cURL在航站楼&x2014工作;PHP json中的错误
我查看了所有其他终端与PHP的问题,没有找到解决方案 我正在使用data API,它用于检索文件列表: 翻译中我遗漏了什么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 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);