tom1bc: curl Authentifizierung

Hallo zusammen,

habe Probleme mit der Authentifizierung bei curl.
Habe folgenden Script:

  
$login = '"myuser":"mypasswort"';  
$url = "zum-server";  
$soapFunctionParameters = Array("pastdays"=>"1","format"=>"json", "page"=>"1", "per_page"=>"3");  
  
$curl_handler = curl_init( );  
// der Aufruf der Login-Seite  
curl_setopt($curl_handler, CURLOPT_URL, $url );  
curl_setopt($curl_handler, CURLOPT_RETURNTRANSFER, true);  
// curl_setopt($curl_handler, CURLOPT_HTTPHEADER, array('Content-Type: application/xml') );  
curl_setopt($curl_handler, CURLOPT_HEADER, true);  
curl_setopt($curl_handler, CURLOPT_POST, true);  
// hier müssen die Benutzerdaten eingetragen werden  
curl_setopt($curl_handler, CURLOPT_USERPWD, $login);  
// Versuch, hat leider nicht funktioniert.  
// $headers = array(  
    // 'Content-Type:application/json',  
    // 'Authorization: Basic '. base64_encode( $login ) // <---  
// );  
// curl_setopt($curl_handler, CURLOPT_HTTPHEADER, $headers);  
// Zusatzparameter  
curl_setopt($curl_handler, CURLOPT_PORT , 443 );  
curl_setopt($curl_handler, CURLOPT_POST, true);  
curl_setopt($curl_handler, CURLOPT_POSTFIELDS, $soapFunctionParameters );  
  
$response = curl_exec($curl_handler);  
  
if (!curl_errno($curl_handler))  
{  
    $info = curl_getinfo($curl_handler);  
    echo "<pre>info: ";  
    print_r( $info );  
    echo "</pre><hr>";  
     echo "<pre>response: ";  
    print_r( $response );  
    echo "</pre>";  
}  
else  
{  
        echo "<pre>FHELER::curl_errno(curl_handler): ";  
        print_r( curl_errno($curl_handler) );  
        echo "</pre>";  
}  
curl_close($curl_handler);  

Im Abschnitt „<pre>info</pre>“ sehe ich »[http_code] => 401«, also ist meine authentifizieren fehle geschlagen.
Im Abschnitt "responese" bekomme ich als einen der ersten Ausgaben folgendes "HTTP/1.1 401 Authorization Required".

Bei der Authentifizierung handelt es sich .htaccess Authentifizierung.
Kann ich das mit curl über haupt abfragen?
Wenn ich natürlich die URL mit Parametern im Browser angeben, kommt die User/Passwort abfrage, dann werden alle angeforderten Daten korrekt ausgelesen.

Hat jemand eine Idee, was an dem PHP-Script falsch ist?
Wurden falsche Parameter übergeben, oder fehlen welche?
Danke im Vorraus.

Grüße

  1. Meine Herren!

    $login = '"myuser":"mypasswort"';

    Sind das wirklich die Zugangsdaten? Sind die inneren doppelten Anführngszeichen wirklicht teil des Benutzersnamens bzw. Passworts? Oder wolltest du eigentlich folgendes schreiben:

    $login = 'myuser:mypasswort';

    --
    “All right, then, I'll go to hell.” – Huck Finn
    1. Meine Herren!

      $login = '"myuser":"mypasswort"';

      Sind das wirklich die Zugangsdaten? Sind die inneren doppelten Anführngszeichen wirklicht teil des Benutzersnamens bzw. Passworts? Oder wolltest du eigentlich folgendes schreiben:

      $login = 'myuser:mypasswort';

      Ja, ich wolle folgendes schreiben:
      $login = 'myuser:mypasswort';

  2. Die Lösung, die bei mir funktioniert:

      
    $submit_url ="https://my_user:my_passwort@die_url?pastdays=1&format=json&page=1&per_page=2";  
      
    $curl = curl_init();  
      
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST ); # <--- War ausschag geben.  
    curl_setopt($curl, CURLOPT_SSLVERSION,3);  
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);  
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  
    curl_setopt($curl, CURLOPT_URL, $submit_url);  
      
    $response = curl_exec($curl);  
      
    if (!curl_errno($curl)) {  
          echo "<pre>response: ";  
          print_r( $response );  
          echo "</pre>";  
    } else {  
        echo "<pre>FHELER::curl_errno(curl_handler): ";  
        print_r( curl_errno($curl) );  
        echo "</pre><hr>";  
        echo "<pre>FHELER::curl_error(curl_handler): ";  
        print_r( curl_error($curl) );  
        echo "</pre>";  
    }  
    curl_close($curl);