Winhttprequest.responsetext ¿No devuelve el HTML completo?
-
28-10-2019 - |
Pregunta
Traté de usar la solicitud WinHTTP para recuperar una página web (sitio web HTTPS) en VB.NET y por alguna razón solo estaba devolviendo el HTML parcial, ¿hay alguna restricción de longitud en la cantidad de caracteres que podría tomar? Si es así, ¿puedo obtener el contenido después de, por ejemplo, 10000 ° personaje?
El código relevante está aquí:
oRequest = New WinHttp.WinHttpRequest oRequest.Open("GET", sQueryURL, False) oRequest.SetTimeouts(0, 600000, 0, 0) oRequest.Send() If oRequest.Status = "200" Then Debug.Print(oRequest.ResponseText) Else End If
Solución
Ha pasado un tiempo desde que usé WinHttpRequest, pero creo que tan pronto como lees ResponseText, WinHttpRequest abandonará el procesamiento de la respuesta. ¡Desde que te estás sumergiendo bien al leer la respuesta, supongo que la respuesta completa no ha llegado cuando imprime Responsetxt!
Creo que tienes 2 opciones para probar:
- Usar
WinHttpRequest.WaitForResponse()
para esperar a que toda la respuesta esté lista - Usar
WinHttpRequest.ResponseStream
Para procesar la respuesta en fragmentos (deberá convertir los trozos de bytes a texto legible)
No puedo decir si estás usando VB.NET, pero si lo estás: Considere usar System.web.httprequest. La interfaz es más o menos la misma y tendrá más fácil encontrar ejemplos y consejos de trabajo.