Как переключиться с POST на GET в PHP CURL

Я попытался переключиться с предыдущего запроса на отправку запроса Get. Что предполагает его Get, но в конечном итоге делает сообщение.

Я пробовал следующее в PHP:

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

Что мне не хватает?

Дополнительная информация: У меня уже есть соединение, которое настроено для выполнения запроса POST. Это завершается успешно, но позже, когда я пытаюсь повторно использовать соединение и переключаюсь обратно на GET с помощью setopts выше, он все же заканчивает выполнение POST внутри с неполными заголовками POST. Проблема в том, что он считает, что он выполняет GET, но заканчивает тем, что ставит заголовок POST без параметра длины содержимого, а соединение терпит неудачу с 411 ERROR.

Убедитесь, что вы отправляете строку запроса в конце URL-адреса при выполнении запроса GET.

 $ qry_str = "? x = 10 & y = 20";
 $ ch = curl_init ();

 // Устанавливаем данные запроса здесь с 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 ($ ч);
 print $ content;
 С помощью POST вы передаете данные через параметр CURLOPT_POSTFIELDS вместо 
 передачи его в 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);

 // Установить метод запроса на POST
 curl_setopt ($ ch, CURLOPT_POST, 1);

 // Задайте данные запроса здесь с помощью CURLOPT_POSTFIELDS
 curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ qry_str);

 $ content = trim (curl_exec ($ ch));
 curl_close ($ ч);
 print $ content;

Примечание из документов curl_setopt() для CURLOPT_HTTPGET (выделено мной):

[Установите CURLOPT_HTTPGET равным] TRUE чтобы сбросить метод HTTP-запроса в GET.
Поскольку GET является значением по умолчанию, это необходимо только в том случае, если метод запроса был изменен.

Добавьте это перед вызовом curl_exec ($ curl_handle)

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

Решенный: Проблема здесь:

Я устанавливал POST через _CUSTOMREQUEST и _POST а _CUSTOMREQUEST сохранялся как POST а _POST переключался на _HTTPGET . Сервер принял заголовок от _CUSTOMREQUEST чтобы быть правильным и вернулся с 411.

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

Запрос CURL по умолчанию – GET, вам не нужно устанавливать какие-либо опции для запроса GET CURL.

Вот довольно приличный пример разницы:

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