He intentado cambiar de una solicitud de publicación anterior a una solicitud de obtención. Lo que asume que es un Get pero eventualmente hace una publicación.
Probé lo siguiente en PHP:
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, null);
curl_setopt($curl_handle, CURLOPT_POST, FALSE);
curl_setopt($curl_handle, CURLOPT_HTTPGET, TRUE);
¿Qué me estoy perdiendo?
Información adicional: ya tengo una conexión configurada para realizar una solicitud POST. Eso se completa con éxito, pero más tarde, cuando intento reutilizar la conexión y volver a GET usando los setopts anteriores, todavía termina haciendo un POST internamente con encabezados POST incompletos. El problema es que cree que está haciendo un GET pero termina colocando un encabezado POST sin el parámetro content-length y la conexión falla con un ERROR 411.
Respuestas:
Asegúrese de poner su cadena de consulta al final de su URL cuando realice una solicitud GET.
Nota de los
curl_setopt()
documentos paraCURLOPT_HTTPGET
(énfasis agregado):fuente
Agregue esto antes de llamar a curl_exec ($ curl_handle)
curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'GET');
fuente
Resuelto: el problema radica aquí:
Configuré a
POST
través de ambos_CUSTOMREQUEST
y_POST
y el_CUSTOMREQUEST
persistió comoPOST
mientras_POST
cambiaba a_HTTPGET
. El servidor asumió que el encabezado de_CUSTOMREQUEST
era el correcto y regresó con un 411.curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'POST');
fuente
La solicitud CURL de forma predeterminada es GET, no es necesario configurar ninguna opción para realizar una solicitud GET CURL.
fuente