So erhalten Sie Informationen zur gesendeten PHP-Curl-Anfrage
Ich versuche zu Debuggen, eine curl-Anfrage an einen webservice 'getToken' Endpunkt.
Bin ich mir nicht 100% sicher, dass die URL und den auth-info wird immer geschrieben, in der curl-handle korrekt.
Ich versuche zu verwenden curl_getinfo($ch, CURLINFO_HEADER_OUT);
zur Erfassung der Anfrage gesendet, aber es tut nicht geben mir viel info. Gibt es einen Weg, um mehr in die Tiefe Diagnose über das, was den eigentlichen curl-Anfrage aussieht?
Hier der code:
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HEADER, 1); //just getting header to see if we got an auth token
curl_setopt($ch, CURLOPT_FILE, $fh);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, 1); //capture the header info
curl_setopt($ch, CURLOPT_VERBOSE, 1); //turn verbose on
//execute the curl request
$rh = fopen("request.txt", "w"); //open request file handle
$verbose = fopen('php://temp', 'rw+');
curl_setopt($ch, CURLOPT_STDERR, $verbose);
curl_exec($ch); //execute request
$sent_request = curl_getinfo($ch, CURLINFO_HEADER_OUT);
fwrite($rh, $sent_request); //save the request info
fclose($rh);
!rewind($verbose);
$verboseLog = stream_get_contents($verbose);
echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";
Dies alles funktioniert so weit wie es geht, aber ein 401 zurück jedes mal, wenn-- die API-admin hat mir versichert, dass der Benutzername /Passwort habe ich korrekt ist.
Wurde ich gefragt, ob ich irgendwie immer den URL-Wert, der falsch ist, oder nicht, dass Sie die richtigen Benutzernamen /Passwort, aber diese info ist nicht gedruckt, in der Daten gespeichert:
HEAD /export/auth HTTP/1.1
Authorization: Basic Y2FpcmRzdW5mYTpENWlAaVM4cw==
Host: webservices.mycompany.com
Accept: */*
Können Sie sehen, dass der Benutzername/Passwort ist nicht gespeichert (ich nehme an aus Sicherheitsgründen). Die Endpunkt-URL, die ich denke, ist das host
Wert plus den start der HEAD
Wert, so webservices.mycompany.com/export/auth
?
Die "Ausführliche Informationen" - Anweisung druckt nichts. Nicht sicher, warum auf diesem entweder!
Danke für die Hilfe.
EDIT: Hinzugefügt verbose-Modus aus Php - Debugging-Curl Dank Kommentator immulatin
InformationsquelleAutor der Frage user101289 | 2013-06-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie
CURLINFO_HEADER_OUT
zutrue
ausgehende Header finden Sie im array zurückgegebencurl_getinfo()
unterrequest_header
Schlüssel:Diese drucken:
Beachten Sie die auth-details sind base64-kodiert:
Beachten Sie auch, dass Benutzername und Passwort benötigt, um sein Prozent-verschlüsselt und entziehen sich jeglicher URL reservierte Zeichen (
/
?
&
:
und so weiter), die Sie enthalten könnten:InformationsquelleAutor der Antwort lafor
Können Sie auch mit einem proxy tool wie Charles zur Erfassung der ausgehenden request-Header, Daten, etc. durch die übergabe der proxy-Angaben durch
CURLOPT_PROXY
zu Ihremcurl_setopt_array
Methode.Beispiel:
InformationsquelleAutor der Antwort acetone
curl_getinfo()
muss Hinzugefügt werden, vor dem schließen der curl handlerInformationsquelleAutor der Antwort soulge
Die Anfrage ist gedruckt in einem request.txt mit details
Können Sie auch verwenden, curl_getinfo () - Funktion.
InformationsquelleAutor der Antwort Veeresh Sasalawad