并再次进行dll和营销 - 页 15

 
Реter Konow:
401错误是什么意思?

在Yandex中输入 "http 401",它会告诉你一切细节。

 
Nikolai Karetnikov:

代码结果 -"Webrequest4Voice(EURCHF,D1) 下载错误'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST',代码401"

401是服务器需要认证

拿一个查询模拟器(比如postman),在那里做一个正常的请求,然后把它转移到mql。

或者像马克西姆在上面写的那样
 
Maxim Kuznetsov:

在Yandex中输入 "http 401",它会告诉你一切细节。

谁说有一个http错误?TC没有解释,我不得不去查?)))。
 

https://example-files.online-convert.com/audio/wav/example.wav

从这里下载,没有任何问题

快照3

并播放声音

 
Alexsandr San:

https://example-files.online-convert.com/audio/wav/example.wav

从这里下载,没有任何问题


如果下载的文件在下载后立即被写入Files文件夹,那么它 可播放性如何?在代码中添加几行,你就可以测试了。
 
Реter Konow:
而如果PlaySound在下载文件后立即将其播放到Files文件夹中,那么下载的文件如何播放?在代码中添加几行,你就可以测试它了。

所以,它直接进入了Files 文件夹,一切都很正常

------------------------------------------------------------------

我就是这样做的。

? 它的下载和播放的时候了 ?

         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");
           }
 
Alexsandr San:

这样它就会直接进入Files 文件夹

好的,在这之后的代码中是否有PlaySound的调用?这样一来,一经下载,马上就能播放。
 
Maxim Kuznetsov:

要把一个HTTP请求从curl选项翻译成WebRequest 参数,你必须这样做。

1.一般来说,看看维基百科,看看HTTP是如何结构的

2.在Curl文档中查看选项的含义以及为什么要使用它们

3.阅读WebRequest的帮助,看看例子,甚至在这个主题中也有很多

4.你在写代码的时候应该意识到你做了什么:-)什么,为什么,为什么会被使用。

你显然是在期待所有4点都能为你完成。我知道现在是周末,时间很紧,你有很多想法。它必须是快速的。

但我还是要自己做。

马克西姆,)那么,这有什么意义呢?

在curl中,只有一个参数--"-u "是授权或用户,后面是apikey。

在WebRequest的帮助文件中,你可以弄清楚如何用雅虎金融的响应来填充产生的json数组。

这个主题中所有的WebRequest例子都是帮助中的一个也是唯一的一个脚本,我在整个过程中发布了))))。

意识到已经做了什么--没有例子就很难做到这一点。商业上提供TTS的网站都有使用.NET、Java、curl的例子,可以说是成熟的编程语言。他们甚至对像MQL这样的小东西都没有头绪。

因此,你的帖子在理论上是重要的,但在实用性上却无足轻重。

具体来说,对我来说,比如说,不清楚在哪里。

1)标题。

2) 网址或

3)其他地方。

你需要指定输出为wav文件,我找不到这样的例子,也找不到这样的书。

 

总之,这就是它的工作方式。

//+------------------------------------------------------------------+
//|                                                   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                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string cookie=NULL,headers;
   char   post[],result[];
   char cost_char_data[];
   string  result_headers;

   headers = "-u apikey:GR1bb3zVMs9fcNKL6pA9-5zj9ptWliCu6eh9oupUnpZB --output hello_world.wav";
   string url="https://example-files.online-convert.com/audio/wav/example.wav";
   ResetLastError();
   int res = WebRequest("GET",url,headers,1000,cost_char_data,result,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");
           }
         else
            Print("Ошибка в FileOpen. Код ошибки =",GetLastError());
        }
      else
         PrintFormat("Ошибка загрузки '%s', код %d",url,res);
     }
  }
//+------------------------------------------------------------------+

只有网站是错的。

射击4

 
Alexsandr San:

所以,它直接进入了Files 文件夹,一切都很正常

------------------------------------------------------------------

我就是这样做的。

? 它的下载和播放的时候了 ?

我明白了,所以它是有效的。现在,TC所要做的就是把网络请求整理好,就可以了。