Wie von POST wechseln in PHP CURL GET
Frage
Ich habe versucht, aus einem früheren Gesuche auf eine Get-Anfrage wechseln. Die davon ausgeht, es ist ein Get aber schließlich tut ein Beitrag.
Ich habe versucht, die folgend in PHP:
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, null);
curl_setopt($curl_handle, CURLOPT_POST, FALSE);
curl_setopt($curl_handle, CURLOPT_HTTPGET, TRUE);
Was bin ich fehlt?
Weitere Informationen: Ich habe bereits eine Verbindung, die Einrichtung ist eine POST-Anforderung zu tun. Die erfolgreich abgeschlossen werden, aber später, wenn ich versuche, die Verbindung wieder zu verwenden und wechseln Sie wieder die setopts GET mit oben noch einem POST-intern mit unvollständigem POST Header tun landet. Das Problem ist, es glaubt, es ist ein GET zu tun, sondern landet einen POST-Header setzen, ohne die Content-Length-Parameter und die Verbindung fehlschlägt Witha 411 ERROR.
Lösung 3
Gelöst: Das Problem liegt hier:
Ich habe POST
sowohl über _CUSTOMREQUEST
und _POST
und die _CUSTOMREQUEST
blieb als POST
während _POST
_HTTPGET
geschaltet. Der Server übernahm die Header von _CUSTOMREQUEST
die richtigen zu sein und kam mit einem 411.
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'POST');
Andere Tipps
Vergewissern Sie sich, dass Sie Ihren Abfrage-String am Ende der URL setzen sind, wenn eine GET-Anfrage zu tun.
$qry_str = "?x=10&y=20"; $ch = curl_init(); // Set query data here with the URL curl_setopt($ch, CURLOPT_URL, 'http://example.com/test.php' . $qry_str); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 3); $content = trim(curl_exec($ch)); curl_close($ch); print $content;
With a POST you pass the data via the CURLOPT_POSTFIELDS option instead of passing it in the CURLOPT__URL. ------------------------------------------------------------------------- $qry_str = "x=10&y=20"; curl_setopt($ch, CURLOPT_URL, 'http://example.com/test.php'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 3); // Set request method to POST curl_setopt($ch, CURLOPT_POST, 1); // Set query data here with CURLOPT_POSTFIELDS curl_setopt($ch, CURLOPT_POSTFIELDS, $qry_str); $content = trim(curl_exec($ch)); curl_close($ch); print $content;
Hinweis aus dem curl_setopt()
docs CURLOPT_HTTPGET
(Hervorhebung hinzugefügt):
[Set CURLOPT_HTTPGET gleich]
TRUE
auf Zurücksetzen die HTTP-Request-Methode zu erhalten.
Da GET der Standard ist, ist dies nur erforderlich, wenn die Anforderungsmethode geändert wurde.
Fügen Sie diese vor dem Aufruf curl_exec ($ curl_handle)
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'GET');
ROTATION Anfrage ist standardmäßig GET, Sie müssen keine Optionen festlegen, um eine GET-ROTATION Antrag zu stellen.