2016-11-11 10 views
1

Ich versuche, eine Verbindung zu einem WS mit Curl herzustellen. Mein Code:curl mit basic http Auth nicht funktioniert

$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); 

ich diesen Fehler:

'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. 

Ich kann nicht den Fehler in meinem Code herauszufinden. Haben Sie einen Parameter verpasst?

+0

von WS meinen Sie Website, anstatt einer .ws Website? – Martin

+0

Gibt es einen Grund, warum Sie CURLOPT_USERPWD nicht verwenden, anstatt den Autorisierungsheader selbst zu erstellen? – CBroe

+0

Es ist auf dem Header-Array gesetzt –

Antwort

1

Versuchen hinzuzufügen:

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 

standardmäßig, wenn Sie HTTPS-Protokoll verwenden, gibt ROTATION prüft SSL sertificate auf Ihrem Server und einen Fehler, wenn es nicht gültig ist. Die obige Zeile schaltet dies aus.

+0

Während dies richtig sein könnte, ist es bemerkenswert, dass es sehr schlechte Praxis ist, cURL-Überprüfung zu deaktivieren, da die TLS-geschützte Website auch nicht gesichert werden könnte, wenn es nicht authentifiziert werden kann. (Die Überprüfung dieser Überprüfung ist jedoch wahrscheinlich ein anderes Problem). [Referenz] (https://curl.haxx.se/docs/sslcerts.html) – Martin

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); 
+0

können Sie bearbeiten Sie beantworten und erklären, was Sie geändert haben und warum Ihr Code funktioniert? – Martin

+0

thx, aber ich bin ich benutze Get-Methode, so brauche ich 'curl_setopt ($ ch, CURLOPT_CUSTOMREQUEST," POST ");' –