問題の性質から、あなたはB600を使用していると思われます。
そのため、例えばUNICODEを使用してコードを 適合 させる必要が あります。
int InternetOpenW(...
(ANSI)ではなく
int InternetOpenA(...
皆さん、こんにちは。
この話題は何度も議論されているのは知っています。しかし、私が見つけたこのトピックの記事はすべて、残念ながら複雑すぎたり、古すぎるためにエラーメッセージが表示されたりしました。したがって、私は単純なPOST/GETリクエストを行うスクリプトを作成することができませんでした。
そこで、単純にPOSTとGETのリクエストをサーバーに送りたいのです。ターゲットファイルは単純なphpファイルです。
これは、私が最初に作成したテストスクリプトで、https://www.mql5.com/en/code をベースにしています。
残念ながら、私は結果として "0 "を受け取り、それは要求が成功しなかったことを意味します。しかし、私は原因を見つけることができません。
あなたが私を助けることができることを願っています。
ありがとうございます。
アレックス
https://www.mql5.com/en/forum/149321
OKです。迅速な返信をありがとうございます。まだテストしていないのですが、もう少し詳しく教えていただけませんか?質問で申し訳ないのですが、B600とは何でしょうか?さらに、「InternetOpenW」「InternetOpenA」関数のドキュメントがhttp://msdn.microsoft.com/en-us/library/windows/desktop/aa385098(v=vs.85).aspx に見当たりません。
この「...A」と「...W」はどこから来ているのでしょうか?
助けてくれてありがとうございます。
とありますが、B600とは何でしょうか?
バージョン600以上(MetaTrader)=ビルド600以上=B600>となります。
の「...A」「...W」はどこから来ているのでしょうか?
をお読みいただければと思います。
という記述があります(一番下)。
ユニコードとANSIの名前 InternetOpenUrlW(ユニコード)とInternetOpenUrlA(ANSI)。
というわけで、実はPOST/GETリクエストの場合は、関数「InternetOpenUrlW」は全く必要ないのではないかと思っています。
これは、まだ動作していない現在のコードです:-( :
#import "Wininet.dll" int InternetOpenW(string, int, string, string, int); int InternetConnectW(int, string, int, string, string, int, int, int); int InternetOpenUrlW(int, string, string, int, int, int); int InternetCloseHandle(int); int HttpOpenRequestA (int, string, string, string, string, string& AcceptTypes[], int, int); bool HttpSendRequestW(int, string, int, string, int); #import int OnInit() { string headers = "Content-Type: application/x-www-form-urlencoded"; string data = ""; string acceptTypes[1] = {"*/*"}; int HttpOpen = InternetOpenW("HTTP_Client_Sample", 1, NULL, NULL, 0); int HttpConnect = InternetConnectW(HttpOpen, "http://localhost/tradex", 7777, NULL, NULL, 3, 0, 1); int HttpRequest = HttpOpenRequestA(HttpConnect, "POST", "/index.php", "HTTP/1.1", NULL, acceptTypes, 0, 1); string result = HttpSendRequestW(HttpRequest, headers, StringLen(headers), data, StringLen(data)); int read[1]; Print("This is the POST result: " + result); return(0); }
qjolさん、こんにちは。
とても参考になるリンクをありがとうございます。URLからデータをGET するのは分かるのですが、データをPOST する方法がまだ分かりません。このスクリプトは、関数 "HttpOpenRequestW" を定義していますが、それを使って いません。さらに、スクリプトはデータを受け取るだけで、うまく動作しています。
しかし、データをPOST するにはどうしたらよいのでしょうか?HttpOpenRequestW" で動作するはずですが、以前投稿したように、エラーメッセージが表示されます:"'Wininet.dll' の 0x0000007B へのアクセス違反読み取り "と"HttpOpenRequestA "は明らかに動作して いません。
あなたが助けることができることを願っています。
私はあなたのコードをチェックすることに決め、それを修正しましたが、result = falseなので、私はそれをチェックアウトし、私はエラーコード 12005を取得し、マイクロソフトのエラーコードリストによると、それは次のことを意味します。
エラー_インターネット_無効な_url
12005
URLが無効です。
#import "Wininet.dll" int InternetOpenW(string, int, string, string, int); int InternetConnectW(int, string, int, string, string, int, int, int); int InternetOpenUrlW(int, string, string, int, int, int); int InternetReadFile(int, string, int, int& OneInt[]); int InternetCloseHandle(int); int HttpOpenRequestW(int, string, string, string, string, string& AcceptTypes[], int, int); bool HttpSendRequestW(int, string, int, string, int); #import #import "kernel32.dll" int GetLastError(void); #import string headers = "Content-Type: application/x-www-form-urlencoded"; string data = ""; string acceptTypes[1] = {"*/*"}; int HttpOpen = InternetOpenW("HTTP_Client_Sample", 1, "", "", 0); int HttpConnect = InternetConnectW(HttpOpen, "http://localhost/tradex", 7777, "", "", 3, 0, 1); int HttpRequest = HttpOpenRequestW(HttpConnect, "POST", "/index.php", "HTTP/1.1", "", acceptTypes, 0, 1); bool result = HttpSendRequestW(HttpRequest, headers, StringLen(headers), data, StringLen(data)); Alert ("Last MSDN Error =: ", kernel32::GetLastError()); int read[1]; // not used Print("This is the POST result: ", result); if (HttpOpen > 0) InternetCloseHandle(HttpOpen); if (HttpRequest > 0) InternetCloseHandle(HttpRequest); return;

- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
皆さん、こんにちは。
この話題は何度も議論されているのは知っています。しかし、私が見つけたこのトピックの記事はすべて、残念ながら複雑すぎたり、古すぎるためにエラーメッセージが表示されたりしました。したがって、私は単純なPOST/GETリクエストを行うスクリプトを作成することができませんでした。
そこで、単純にPOSTとGETのリクエストをサーバーに送りたいのです。ターゲットファイルは単純なphpファイルです。
これは、私が最初に作成したテストスクリプトで、https://www.mql5.com/en/code をベースにしています。
残念ながら、私は結果として "0 "を受け取り、それは要求が成功しなかったことを意味します。しかし、私は原因を見つけることができません。
あなたが私を助けることができることを願っています。
ありがとうございます。
アレックス