/ / ¿Cómo obtener la parte del fragmento de una URL desde libcurl? - c ++, libcurl

¿Cómo obtener la parte del fragmento de una URL desde libcurl? - c ++, libcurl

Me redireccionan a una página con una dirección como http://example.com#foo=bar. Quiero tener foo=bar Parte de ello. Todo el asunto estaría bien también.

Encontré esta cosa:

char * url;
curl_easy_getinfo(myHandle, CURLINFO_EFFECTIVE_URL, &url);

No sé bien el inglés para encontrar información por mí mismo. Cada vez que quiero encontrarla, encuentro información sobre cómo convertir la página en una variable de cadena.

Código:

std::string readBuffer;
curl_global_init( CURL_GLOBAL_ALL);
CURL * myHandle;
CURLcode result;
myHandle = curl_easy_init();
curl_easy_setopt(myHandle, CURLOPT_COOKIEJAR, "coo.txt");
curl_easy_setopt(myHandle, CURLOPT_COOKIEFILE, "coo.txt");
curl_easy_setopt(myHandle, CURLOPT_URL, "https://www.google.ru/#q=stack");
curl_easy_setopt(myHandle, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(myHandle, CURLOPT_WRITEDATA, &readBuffer);
curl_easy_setopt(myHandle, CURLOPT_FOLLOWLOCATION, 1L);
result = curl_easy_perform(myHandle);
char * ch_cur_url;
result = curl_easy_getinfo(myHandle, CURLINFO_EFFECTIVE_URL,
&ch_cur_url);
printf("%sn", ch_cur_url);

Salidas https://www.google.ru/

Cuando queria https://www.google.ru/#q=stack

Respuestas

1 para la respuesta № 1

cURL elimina el "identificador de fragmento" de la URL antes de realizar una solicitud, según los informes de errores (1, 2). Ver también este parche. Por lo tanto, el "identificador de fragmento" no está disponible como parte de la CURLINFO_EFFECTIVE_URL.

Si el "identificador de fragmento" se devuelve como parte de una redirección (por ejemplo, el Location Encabezado HTTP) y no se puede obtener de otra manera,luego puede usar los modos de depuración para ver las comunicaciones entre la cURL y los servidores y extraer el "identificador de fragmento" usted mismo. Para ello necesitarás configurar cualquiera CURLOPT_DEBUGFUNCTION o CURLOPT_HEADERFUNCTION.

PD Un consejo: buscar en Google la información relevante fue muy fácil. Lo primero que hice fue aprender el nombre "oficial" de la #foo=bar. Para conseguirlo visité Wikipedia en URL y fue llevado a Identificador de fragmento. Después de eso, buscar en Google con el "fragmento de enrollamiento" redujo las partes relevantes. Si estás buscando algo, aprende el nombre correcto.