PHP CURL GET POST geçmek için nasıl

4 Cevap php

Ben bir alın isteği bir önceki post isteği geçiş denedim. Onun olsun varsayar ama sonunda bir yazı yok ki.

Ben PHP aşağıdaki çalıştı:

curl_setopt($curl_handle, CURLOPT_POSTFIELDS, null);
curl_setopt($curl_handle, CURLOPT_POST, FALSE);
curl_setopt($curl_handle, CURLOPT_HTTPGET, TRUE);

Ne eksik?

Additional information: I already have a connection that's setup to do a POST request. That completes successfully but later on when I try to reuse the connection and switch back to GET using the setopts above it still ends up doing a POST internally with incomplete POST headers. The problem is it believes its doing a GET but ends up putting a POST header without the content-length parameter and the connection fails witha 411 ERROR.

4 Cevap

Çözüldü: Sorun burada yatıyor:

I-POST hem _CUSTOMREQUEST ve _POST ve _CUSTOMREQUEST şeklinde kalıcı ile POST ayarlanmış ise {[(2) ]} {geçti [(6)]}. Sunucu _CUSTOMREQUEST doğru bir ila başlığını üstlendi ve 411 ile geri geldi.

curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'POST');

İşte fark oldukça iyi bir örnektir:

http://www.weberdev.com/get_example-4606.html

GET isteği yaparken sizin URL sonuna sorgu dizesi koyuyorduk emin olun.

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

curl_setopt() docs for CURLOPT_HTTPGET (vurgu eklenmiştir) dan Not:

[Set CURLOPT_HTTPGET equal to] TRUE to reset the HTTP request method to GET.
Since GET is the default, this is only necessary if the request method has been changed.

Curl_exec ($ curl_handle) çağırmadan önce bu ekle

curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'GET');