Я попытался переключиться с предыдущего запроса Post на запрос 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, используя указанные выше настройки, он все равно выполняет внутренний POST с неполными заголовками POST. Проблема в том, что он считает, что выполняет GET, но в итоге помещает заголовок POST без параметра длины содержимого, и соединение не выполняется с 411 ERROR.
Ответы:
Убедитесь, что вы помещаете строку запроса в конец URL-адреса при выполнении запроса GET.
Примечание из
curl_setopt()
документации дляCURLOPT_HTTPGET
(выделено мной):источник
Добавьте это перед вызовом 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.
источник