curl与基本的http auth无法正常工作

时间:2016-11-11 11:31:29

标签: php curl

我正在尝试使用curl连接到WS。 我的代码:

$url ="https://example?param=ee&param2=rr";
$headers = array(
'Content-Type:application/json',
'Authorization: Basic '. base64_encode("username:password") // <---
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$url);
curl_setopt($curl, CURLOPT_HEADER,true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

//curl_setopt($curl, CURLOPT_USERPWD, 'username:passwrd');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$curl_response = curl_exec($curl);

我收到此错误:

 'content_type' => NULL, 'http_code' => 0, 'header_size' => 0, 
 'request_size' => 0, 'filetime' => -1, 'ssl_verify_result' => 0, 
 'redirect_count' => 0, 'total_time' => 0.051353999999999997, 
 'namelookup_time' => 0.0032659999999999998, 
 'connect_time' => 0.051365000000000001, 'pretransfer_time' => 0,
 'size_upload' => 0, 'size_download' => 0, 'speed_download' => 0,
 'speed_upload' => 0, 'download_content_length' => -1, 
 'upload_content_length' => -1, 'starttransfer_time' => 0, 
 'redirect_time' => 0, 'certinfo' => array ( ), 
 'primary_ip' => '185.18.224.30', 'primary_port' => 443, 
 'local_ip' => '172.23.155.94', 'local_port' => 44608, 
 'redirect_url' => '', )error occured during curl exec.

我无法弄清楚代码中的错误。错过了一个参数?

2 个答案:

答案 0 :(得分:1)

尝试添加:

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

默认情况下,当您使用HTTPS协议时,CURL会检查服务器上的SSL sertificate,如果无效,则会出错。上面的一行将其关闭。

答案 1 :(得分:0)

$url ="https://example?";
            $headers = array(
                                'Content-Type:application/json',
                                'Authorization: Basic '. base64_encode("username:password") 
                            );
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS,"param=ee&param2=rr");
            curl_setopt($ch, CURLOPT_HEADER, true);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);   

          // execute the request

            $output = curl_exec($ch);