Discussão do artigo "Usar WinInet em MQL5. Parte 2: Solicitações POST e Arquivos"

 

Novo artigo Usar WinInet em MQL5. Parte 2: Solicitações POST e Arquivos foi publicado:

Neste artigo, continuaremos a estudar os princípios de funcionamento com a Internet usando requisições HTTP e troca de informações com o servidor. Ele descreve as novas funções da classe CMqlNet, métodos de envio de informação de formulários e envio de arquivos usando requisições POST, bem como a autorização em websites sob seu login, usando Cookies.

Autor: o_O

 

Olá, Alex,

Bom artigo - tenho um pedido para a "Parte 3": Comunicação com o cliente XML-RPC (e com o servidor, se possível).

Parabéns

 

Ao executar a instrução a seguir, o sistema trava . Como isso deve ser resolvido?

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

Error: Violação de acesso lida para 0x0000000000001F94 em '......ex5'

 

Há um pequeno erro na linha 161. Essa linha deveria ser:

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

Isso ocorre porque o terminal 0 é copiado para a matriz e o HttpSendRequestW envia o terminal 0 (como um caractere extra) para o último valor da variável post. Por exemplo, se seus dados forem:

var1=value1&var2=value2

Você terá em sua página da Web a var1 associada ao valor1 e a var2 associada ao valor2\0.

Esse é um ótimo artigo. Obrigado por compartilhá-lo.


Meus cumprimentos

 
Após a última atualização do MT5, o wininet não pode ser usado, pois gera um erro de violação de acesso. Alguma sugestão para superar esse erro? Soluções? Estou tentando sem sucesso.
 
O erro de violação de acesso foi resolvido, mas as solicitações POST não estão funcionando agora. Aparentemente, os dados em uma matriz uchar não são enviados corretamente para a função dll.
 
mundoforex:

O erro de violação de acesso foi resolvido, mas as solicitações POST não estão funcionando agora. Aparentemente, os dados em uma matriz uchar não são enviados corretamente para a função dll.
Ainda estou tendo erros de violação de acesso depois de algum tempo.
 
Por que ninguém se importa com esse problema?
 
mundoforex:

Por que ninguém se importa com esse problema?
Estou com você... Estou esperando desesperadamente por uma solução, mas ninguém responde. Achei que a última atualização resolveria o problema, como os administradores me disseram, mas depois da atualização eles nunca mais me responderam :(
 

Também tive um erro de violação de acesso com essa classe de objeto. O problema estava no uso de '0' como um ponteiro NULL na chamada da função HttpOpenRequestW. Tente substituir a chamada

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

por uma chamada:

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


É curioso que o uso inadequado do ponteiro NULL seja explicitamente mencionado como motivo de falha na documentação do 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...
 

Estou tentando obter um relatório sobre produtos do meu perfil e não consigo. O que estou fazendo de errado?