記事"MQL5でのWinInet利用パート2:POSTリクエストとファイル"についてのディスカッション

 

新しい記事 MQL5でのWinInet利用パート2:POSTリクエストとファイル はパブリッシュされました:

本稿では HTTP リクエストとサーバーとの情報交換を利用したインターネットとの連携原理の調査を続行します。そしてCMqlNet クラスの新しい関数、フォームからの情報送信方法、 POST リクエストを利用したファイル送信、Cookies を使用してログインしたウェブサイト上での承認について述べます。

作者: o_O

 

こんにちは、アレックス、

良い記事ですね:XML-RPCクライアント通信(可能であればサーバも)。

応援しています。

 

以下のステートメントを実行すると、システムが クラッシュ します

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

エラー:'......ex5'の0x00000000001F94へのアクセス違反の読み取り

 

161行目にちょっとしたバグがある。その行はこうあるべきだ:

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

これは、terminal 0が配列にコピーされ、HttpSendRequestWが最後のpost varの値にterminal 0(余分な文字のようなもの)を送信するためです。例えば、あなたのデータが

var1=value1&var2=value2

あなたのウェブページでは、var1がvalue1に関連付けられ、var2がvalue2 0に関連付けられます。

これは素晴らしい記事です。共有してくれてありがとう。


よろしくお願いします。

 
MT5をアップグレードした後、wininetが使用できなくなり、アクセス違反エラーが発生しました。このエラーを克服するために何か提案はありますか?私は成功することなく試してきました。
 
アクセス違反のエラーは解決したが、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); 


面白いことに、NULLポインタの不適切な使用は、 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...
 

自分のプロフィールから製品レポートを取得しようとしているのですが、できません。