Próbowałem przełączyć się z poprzedniego żądania posta na żądanie Get. Który zakłada, że jest to Get, ale ostatecznie robi post.
Wypróbowałem następujące w PHP:
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, null);
curl_setopt($curl_handle, CURLOPT_POST, FALSE);
curl_setopt($curl_handle, CURLOPT_HTTPGET, TRUE);
czego mi brakuje?
Dodatkowe informacje: mam już połączenie skonfigurowane do wykonywania żądania POST. To kończy się pomyślnie, ale później, gdy próbuję ponownie użyć połączenia i przełączam się z powrotem do GET za pomocą setopts powyżej, nadal kończy się wewnętrznie wykonaniem POST z niekompletnymi nagłówkami POST. Problem polega na tym, że uważa, że wykonuje GET, ale kończy się umieszczeniem nagłówka POST bez parametru content-length i połączenie kończy się niepowodzeniem z 411 ERROR.
Odpowiedzi:
Upewnij się, że umieszczasz ciąg zapytania na końcu adresu URL podczas wykonywania żądania GET.
Uwaga z
curl_setopt()
dokumentacji dlaCURLOPT_HTTPGET
(wyróżnienie dodane):źródło
Dodaj to przed wywołaniem curl_exec ($ curl_handle)
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'GET');
źródło
Rozwiązany: problem leży tutaj:
Ustawiłem
POST
przez oba_CUSTOMREQUEST
i_POST
i_CUSTOMREQUEST
trwały jakPOST
podczas_POST
przełączania na_HTTPGET
. Serwer przyjął nagłówek od_CUSTOMREQUEST
jako właściwy i wrócił z 411.curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'POST');
źródło
Żądaniem CURL jest domyślnie GET, nie musisz ustawiać żadnych opcji, aby wykonać żądanie GET CURL.
źródło