Dozens of new automated trading applications appear in the MQL5 Market every day. Choose the right app among 10,000 products and forget about unnecessary routine operations of manual trading. Sell your algorithmic trading programs through the largest store of trading applications! Kiss on billions on EURUSD The provided robot (KOB) is a result...
//+------------------------------------------------------------------+//| WebRequest.mq5 |//| Copyright 2020, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2020, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
string cookie=NULL,headers;
char post[],result[];
string url="https://example-files.online-convert.com/audio/wav/example.wav";//--- для работы с сервером необходимо добавить URL "https://finance.yahoo.com"//--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники")://--- обнуляем код последней ошибкиResetLastError();
//--- загрузка html-страницы с Yahoo Financeint res=WebRequest("GET",url,cookie,NULL,5000,post,0,result,headers);
if(res==-1)
{
Print("Ошибка в WebRequest. Код ошибки =",GetLastError());
//--- возможно, URL отсутствует в списке, выводим сообщение о необходимости его добавленияMessageBox("Необходимо добавить адрес '"+url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION);
}
else
{
if(res==200)
{
//--- успешная загрузкаPrintFormat("Файл успешно загружен, размер %d байт.",ArraySize(result));
//PrintFormat("Заголовки сервера: %s",headers);//--- сохраняем данные в файлint filehandle=FileOpen("example.wav",FILE_WRITE|FILE_BIN);
if(filehandle!=INVALID_HANDLE)
{
//--- сохраняем содержимое массива result[] в файлFileWriteArray(filehandle,result,0,ArraySize(result));
//--- закрываем файлFileClose(filehandle);
Sleep(1*1000);
PlaySound("\\Files\\example.wav");
}
elsePrint("Ошибка в FileOpen. Код ошибки =",GetLastError());
}
elsePrintFormat("Ошибка загрузки '%s', код %d",url,res);
}
}
//+------------------------------------------------------------------+
Синтез в реальном времени
Отправив текст для синтеза, ваш сервис или приложение сразу же получит в ответ аудиозапись: задержка настолько мала, что позволяет создавать программное обеспечение с потоковым воспроизведением.
オーソライズでなんとなくわかってきた気がする。
IBMのサーバーでWebRequestを使って どのように認証を行うか、それが重要な問題 なのです。
Romanさん、コメント ありがとうございます! オーソライズもなんとかなりそうですね。
さて、いくつかのパラメータについて。WebRequestのヘルプには、次のように記載されています。
[クエリヘッダーのタイプは "key: value "で、改行で区切られる "week"。
変数 headers 自身は文字列型である
文字列に改行文字が含まれている、つまり文字列の終端があるというのはどういうことでしょうか?
というのは、postmanのスクリーンショットでは、httpリクエストヘッダに出力ペアが書かれていますが、これとは別の説明になっていますね )
同じことを話しているようで、違う言葉になっていますね )
postmanの書き方が悪いのか、何が悪いのか、あなたの問題とどう関係があるのか、わからないのですが...。
が、9割は読めば解決するもので、読むのは解決する人次第。
Rest-APIサービスのドキュメントがあり(読んだことある?)、curlを使った例があり、他の言語を解析する必要がないのが幸いで、WebRequest MTを使わなければならない、というごく典型的なものです。
curlが起動すると、パラメータからどのようなヘッダを生成して送信し、何が返ってきて、それをどのように理解し、どこに置くかというプロトコルが画面に表示されます。
そして、WebRequest に何を送信するかが直接表示されます。
---
ポストマンの書き方が悪いのか、何なのか、あなたの問題とどう関係があるのかわかりませんが...。
が、9割は読めば解決するもので、読むのは解決する人次第です。
Rest-APIサービスのドキュメントがあり(読んだことある?)、curlを使った例があり、他の言語を解析する必要がないのが幸いで、WebRequest MTを使わなければならない、というごく典型的なものです。
curlが起動すると、パラメータからどのようなヘッダを生成して送信し、何が返ってきて、それをどのように理解し、どこに置くかというプロトコルが画面に表示されます。
そして、WebRequest に何を送信するかが直接表示されます。
---
read, read )把握し、前進している。
そこまで行っているつもりです。
Romanさん、コメント ありがとうございます。オーソライズもなんとかなりそうですね。
さて、いくつかのパラメータについて。WebRequestのヘルプには、次のように書かれています。
[クエリヘッダーのタイプは "key: value "で、改行で区切られる "week"。
変数 headers 自身は文字列型である
文字列に改行文字が含まれている、つまり、改行文字があるというのはどういうことですか?
ヘッダには複数のキー/バリュー文字列が含まれる場合があるため、改行が使用される。
ヘッダーの最後には必ずダブルハイフン" \rn" を入れてください。
これはサーバーがヘッダーの終わりを理解する方法であり、httpの規格である。
ダブルハイフンの後には、リクエストまたはレスポンスのボディが来る。
WebRequest 関数では、利便性を考慮してこれらのブロックを分離しています。
ヘッダは独自のパラメータ、ボディは独自のパラメータ。
しかし、リクエストを書く構文は、標準的なhttpに準拠する必要があります。
本サイトよりhttps://example-files.online-convert.com/audio/wav/example.wav
このexample.wav ファイルをダウンロードします。
で、ダウンロードした後にPlaySound("gucci.wav") を再生します。
-------------------------------------------------
しかし、この機能の意味するところは?そんなことはない!
さて、皆さん、次にいきましょうか。
まず、リクエストのコード自体をできるだけ簡略化しましょう。ヘッダーは1つだけにして、認証そのものを残しておきましょう。この場合、追加のヘッダなしで、IBMサーバーは.oggオーディオフォーマットのストリームを提供します。そんなことより、まずは何か作ってみよう、と考えるのです。ヘッダを追加してストリームをwavにフォーマットする無駄な試みはやめて、.oggに対応しましょう(ちなみに、WebRequest構文でも同様のミスがありましたhttps://www.mql5.com/en/forum/310891#comment_16643324 )。
スクリプトがサーバーにログインしてハングアップしてしまう。よし、デバッグモードとかで動かしてみよう...。
ほらね)
グラフからスクリプトを削除しましたが、なぜか完全に実行を停止せず、同期 WebRequest を中断して続行します。
前に進みましょう。char result[]に.oggのストリームがあるので、それをファイルに書き出します。
ファイルも6Kbになります(同じパラメータでcurlやpostmanのクエリが6Kbの.oggファイルを返すので、ちゃんと再生されます!)。テストという言葉が聞けてよかったです ))))
ここで、すべてのchar配列をファイルに書き出します。配列のサイズを測定するのではなく、WHOLE_ARRAYを 取ることを特別に指定します。
それが今の姿です。
ただ、問題は、curlのファイルは問題なく再生されるのですが、私たちのファイルは、なぜか再生されないのです。
両ファイルの中身を見てみましょう。
下側にcurlでダウンロードしたファイル、上側にWebRequestのストリームからバイナリに充填されたファイル
トップファイルtestmql5.oggにある00000089, 00000004のブロブを見てください。)))ボーナスプログラムか何かですか?)))どこから来たんだろう )))))))))))))))))))))))))))))))))))))
まとめ
1.構文がまだ謎です。サーバーへの認証にのみ成功し、他のヘッダーを追加する試みは今のところ失敗しています。
2. WebRequestがふりかけ付きのストリームを受信しているのか、ファイルへの書き込みが間違っているのか、WebRequestメソッドでchar配列の結果から得られる.oggファイルフォーマットが間違っている。
ロッテトマト大歓迎
本サイトよりhttps://example-files.online-convert.com/audio/wav/example.wav
このexample.wav ファイルをダウンロードします。
で、ダウンロードした後にPlaySound("gucci.wav") を再生します。
-------------------------------------------------
しかし、この機能の意味するところは?意味がないと思う!?
アレクサンドル
それは素晴らしい、ありがとうございますただし、wavファイルはTTSエンジン(TextToSpeech)で生成する必要があります。
アレクサンドル
すべて素晴らしい、ありがとうございますただし、wavファイルはTTSエンジン(TextToSpeech)で生成する必要があります。
私はそれを得た - それは動作するはずです?
以下は類似のものですhttps://cloud.yandex.ru/docs/speechkit/tts/request
...
まとめ
1.構文がまだ謎です。サーバーへの認証にのみ成功し、他のヘッダーを追加する試みは今のところ失敗しています。
2. WebRequestがふりかけ付きのストリームを受信しているのか、ファイルへの書き込みが間違っているのか、WebRequestメソッドでchar配列の結果から得られる.oggファイルフォーマットが間違っている。
ロッテトマト大歓迎