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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top