同じWebRequestですから、端末の種類で違いが出るとは思えません。
プログラムで異なるのはresultstrの取得方法だけですが、この部分をMT4と同じ方法で試してみましたか?
これ以外何も思いつかないので、これでもダメなら分かりません。
以下は関係あるかどうか分かりませんが、気になる部分です。
result[]はcharではなくucharです。
WHOLE_ARRAYは-1ですが、マニュアルにはWHOLE_ARRAYの使用に関しては記述がありません。
MetaTraderのUTF-8は日本語環境で使うと文字化けすることがあります。
同じWebRequestですから、端末の種類で違いが出るとは思えません。
プログラムで異なるのはresultstrの取得方法だけですが、この部分をMT4と同じ方法で試してみましたか?
これ以外何も思いつかないので、これでもダメなら分かりません。
以下は関係あるかどうか分かりませんが、気になる部分です。
result[]はcharではなくucharです。
WHOLE_ARRAYは-1ですが、マニュアルにはWHOLE_ARRAYの使用に関しては記述がありません。
MetaTraderのUTF-8は日本語環境で使うと文字化けすることがあります
ご回答ありがとうございます。
> 同じWebRequestですから、端末の種類で違いが出るとは思えません。
回答者様と同じ認識です。アプリケーション以外は同じ環境で実施しているため、完全に行き詰っている状況です。。
>プログラムで異なるのはresultstrの取得方法だけですが、この部分をMT4と同じ方法で試してみましたか?
はい、もともと同じコード(厳密にはMQL5はCharToStrがないためCharToString)にしており、レスポンスコードは同じく404でした。返却されたhtmlの日本語部分が文字化けしたため、QAに添付した内容に差し替えています。
>result[]はcharではなくucharです。
WebRequest - ネットワーク関数 - MQL5 リファレンス - MetaTrader 5 のためのアルゴリズムの/自動化されたトレーディング言語のリファレンス
上記ですとcharでの定義なのですが、ucharを使用すべきでしょうか?参照先のリファレンスなどあればご教示いただけると助かります。
※念のためucharでも試してみましたが、結果変わらず、本件との関連はなさそうです。
>WHOLE_ARRAYは-1ですが、マニュアルにはWHOLE_ARRAYの使用に関しては記述がありません。
おっしゃる通り定数での使用がリファレンスに記載されていないため、-1をオンコーディングしてみましたが、結果は変わらずでした。
>MetaTraderのUTF-8は日本語環境で使うと文字化けすることがあります。
ありがとうございます。本件とは関連ありませんでしたが、今後留意いたします。
- www.mql5.com
> 上記ですとcharでの定義なのですが、ucharを使用すべきでしょうか?参照先のリファレンスなどあればご教示いただけると助かります。
間違い。CharArrayToString の result でした。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
※teratailで同様の質問をしておりますが、回答を得られず、こちらでも質問させていただいております。
MT4、MT5からGoogleAppsScript(GAS)で作成したウェブアプリケーションへHttpsリクエストでアクセスし、スプレッドシートの値を取得するというシステムを構築しております。
MT4からのリクエストは正常にレスポンスを受信できるのですが、MT5からの呼出しのみ、レスポンスが以下の返却値とともに404エラーとなります。特定のアプリケーションからの呼出しはGoogle側でエラーを返却するなどの制約があるのでしょうか。ネットワーク周りの知見が不足しているため、お詳しい方にご助力いただきたいです。
MT5からの呼出しの場合も、リクエストは受信され、GASの処理は正常に終了している(MT4からの呼出し時と同じ結果となっている)ことはGASのログ出力より確認済みです。
したがって、GASの処理終了後、Google側のサーバからの返却時に、MT5からの呼出しの場合のみ何らかの理由でレスポンス内容がエラーページに差し替えられていると考えております。
MQL4(レスポンス値200)
MQL5(レスポンス値404)
GAS(共通。doGet()内の戻り値返却箇所のみ抜粋)
MT5からの呼出し時も下記console.logに到達していること、および出力内容に問題がないことを確認済み
MT5側(レスポンス404)のレスポンス内容は以下となります。
MT4(レスポンス200)内容は以下です。(MT5との仕様の違いにより出力順序が逆になっています。resultに"paramError"と出力されていますが、こちらはGASプログラムにおける業務例外のハンドリングのため想定通りの出力で、MT5からの呼出し時の期待結果でもあります)
宜しくお願い致します。