文章 "在 MQL5 中使用 WinInet。第二部分:POST 请求和文件"

 

新文章 在 MQL5 中使用 WinInet。第二部分:POST 请求和文件已发布:

在本文中,我们将继续学习使用 HTTP 请求处理互联网和与服务器进行信息交换的原则。它介绍了 CMqlNet 类的新函数、从表单发送信息的方法、使用 POST 请求发送文件的方法以及使用 Cookie 在您登录网站时进行身份验证。

作者:o_O

 

你好,亚历克斯、

这篇文章写得很好--我有一个 "第 3 部分 "的请求:XML-RPC 客户端通信(如果可能,也包括服务器)。

干杯

 

执行 以下语句,系统会 崩溃 如何 解决

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

错误: 在"......ex5 "中读取 0x0000000000001F94 时存在访问违规行为

 

第 161 行有一个小错误。这一行应该是

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

这是因为终端 0 被复制到了数组中,而 HttpSendRequestW 会将终端 0(就像一个额外的字符)发送到最后一个 post var 值。例如,如果你的数据是

var1=value1&var2=value2

你就会在网页中得到与 value1 相关联的 var1 和与 value2\0 相关联的 var2。

这是一篇很棒的文章。感谢您的分享。


致敬

 
上次 MT5 升级后,wininet 无法使用,ir 生成了访问违规错误。有什么建议可以克服这个错误?我一直在尝试,但没有成功。
 
访问违规错误已经解决,但 POST 请求现在无法正常工作。显然,uchar 数组中的数据没有正确发送到 dll函数
 
mundoforex:

访问违规错误已解决,但 POST 请求现在无法正常工作。显然,uchar 数组中的数据没有正确发送到 dll 函数。
一段时间后,我仍然遇到访问违规错误。
 
为什么没人关心这个问题?
 
mundoforex:

为什么没人关心这个问题?
我和你一样...我一直在焦急地等待解决方案,但没有人回复我。我以为管理员告诉我的上次更新会解决这个问题,但更新后他们就再也没有回复我了 :(
 

在使用该对象类时,我还遇到了一些访问违规错误。问题出在调用 HttpOpenRequestW 函数时将 "0 "作为 NULL 指针。试着将调用

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

调用:

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


有趣的是,在 MSDN 文档 中,不当使用 NULL 指针甚至被明确列为崩溃原因之一:

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...
 

我想从我的个人资料中获取产品报告,但我做不到,我做错了什么?