Discusión sobre el artículo "Usar WinInet en MQL5. Parte 2: Solicitudes y archivos POST"

 

Artículo publicado Usar WinInet en MQL5. Parte 2: Solicitudes y archivos POST:

En este artículo seguimos estudiando los principios del trabajo con internet usando solicitudes HTTP e intercambiando información con el servidor. El artículo describe nuevas funciones de la clase CMqlNet, métodos para enviar información desde formularios y envío de archivos usando solicitudes POST así como autorización en sitios web bajo un registro de usuario usando cookies.

Autor: o_O

 

Hola Alex,

Buen artículo - Tengo una petición para la 'Parte 3': Comunicación cliente XML-RPC (y servidor si es posible).

Cheerz

 

Al ejecutar la siguiente sentencia, el sistema se bloquea, ¿cómo debería resolverse?

hConnect=InternetConnectW(hSession, aHost, aPort, aUser, aPass, aService, 0, 0);

Error: Violación de acceso leído a 0x0000000000001F94 en '......ex5'

 

Hay un pequeño error en la línea 161. Esa línea debería ser:

else StringToCharArray(req.stData, data, 0, StringLen(req.stData));

eso es porque el terminal 0 es copiado al array y HttpSendRequestW envía el terminal 0 (como un caracter extra) al último valor de post var. Por ejemplo si tus datos son:

var1=value1&var2=value2

Obtendrás en tu página web var1 asociado a valor1, y var2 asociado a valor2\0.

Este es un gran artículo. Gracias por compartirlo.


Saludos

 
después de la última actualización de MT5 el wininet no se puede utilizar, ir genera un error de violación de acceso. ¿Alguna sugerencia para superar este error? soluciones? Lo he intentado sin éxito.
 
El error de violación de acceso fue resuelto pero las peticiones POST no funcionan ahora. Aparentemente los datos en un array uchar no se envían correctamente a la función dll.
 
mundoforex:

El error de violación de acceso fue resuelto pero las peticiones POST no funcionan ahora. Aparentemente los datos en un array uchar no se envían correctamente a la función dll.
Sigo teniendo errores de violación de acceso después de algún tiempo.
 
¿Por qué nadie se preocupa de este problema?
 
mundoforex:

¿Por qué nadie se preocupa de este problema?
Estoy contigo... Estoy esperando desesperadamente una solución pero nadie responde. Pensé que la última actualización iba a resolver el problema como los administradores me dijo, pero después de la actualización de la nunca me respondió de nuevo :(
 

También tuve algún error de Violación de Acceso con esta clase de objeto. El problema estaba en el uso de '0' como puntero NULL en la llamada a la función HttpOpenRequestW. Intente reemplazar la llamada

---   hRequest=HttpOpenRequestW(hConnect, req.stVerb, req.stObject, Vers, nill, 0, INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0); 

con una llamada

+++   hRequest=HttpOpenRequestW(hConnect, req.stVerb, req.stObject, Vers, NULL, NULL , INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0); 


Es curioso, que el uso inadecuado de un puntero NULL se menciona incluso explícitamente como una razón de fallo en la documentación de MSDN:

Failing to properly terminate the array with a NULL pointer will cause a crash.
HttpOpenRequest function (Windows)
  • msdn.microsoft.com
Creates an HTTP request handle. Syntax Parameters hConnect [in] lpszVerb [in] A pointer to a null-terminated string that contains the HTTP verb to use in the request. If this parameter is NULL, the function uses GET as the HTTP verb. lpszObjectName [in] A pointer to a null-terminated string that contains the name of the target object of the...
 

Estoy intentando obtener un informe de productos de mi perfil y no puedo, ¿qué estoy haciendo mal?