e novamente dll e mercado - página 15

 
Реter Konow:
O que significa um erro 401?

digite "http 401" em Yandex e ele lhe diz tudo em detalhes.

 
Nikolai Karetnikov:

resultado do código -"Webrequest4Voice(EURCHF,D1) Download error 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', code 401"

401 éservidor requer autenticação

Pegue um emulador de consulta (por exemplo, carteiro) e faça um pedido normal lá e depois transfira-o para o mql.

Ou como Maxim escreveu acima
 
Maxim Kuznetsov:

digite "http 401" em Yandex e ele lhe diz tudo em detalhes.

Quem disse que houve um erro http? O TC não explicou e eu tenho que pesquisar?)))
 

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

baixado daqui sem nenhum problema

Instantâneo3

e toca o som

 
Alexsandr San:

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

baixado daqui sem nenhum problema


Quão jogável é o arquivo baixado se ele for escrito na pasta Arquivos imediatamente após o download? Adicione um par de linhas ao código e você pode testá-lo.
 
Реter Konow:
E quão jogável é o arquivo baixado se o PlaySound o reproduz imediatamente na pasta Arquivos após o download? Adicione um par de linhas ao código e você pode testá-lo.

então ele vai direto para a pastaArquivos etudo funciona bem

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

foi assim que eu fiz.

♪ ele baixa e joga imediatamente ♪

         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:

então ele vai direto para a pastaArquivos

Ok, há uma chamada PlaySound no código depois disso? Para que, assim que for baixado, ele jogue imediatamente.
 
Maxim Kuznetsov:

Para traduzir uma solicitação HTTP das opções de enrolar para parâmetros WebRequest, você tem que fazê-lo:

1. em geral, veja a wikipedia para ver como o HTTP está estruturado

2. Verifique na documentação Curl para ver o significado das opções e por que elas são usadas

3. Leia a ajuda do WebRequest e veja exemplos, mesmo neste tópico muitas vezes

4. você deve escrever o código estando ciente do que fez :-) o que, por que e por que é usado.

Você está obviamente esperando que todos os 4 pontos sejam feitos por você. Eu entendo que é fim de semana, o tempo é curto e você tem muitas idéias. Tem que ser rápido.

Mas eu mesmo ainda tenho que fazer isso.

Maxim, ) Bem, qual é o objetivo?

Na ondulação, há apenas um parâmetro - "-u" é autorização ou usuário, seguido de apikey

No arquivo de ajuda do WebRequest, você pode descobrir como preencher a matriz json resultante com a resposta financeira yahoo.

Todos os exemplos de WebRequest neste tópico são o único e único script na ajuda, que coloquei o tempo todo em )))).

Estar consciente do que tem sido feito - é difícil fazer sem um exemplo. Sites que oferecem comercialmente TTS têm exemplos com .NET, Java, curl, linguagens de programação maduras, por assim dizer. Eles não fazem a menor idéia sobre crianças como a MQL.

Portanto, seu posto é importante em teoria, mas insignificante em sua utilidade.

Especificamente, para mim, por exemplo, não está claro onde:

1) cabeçalhos,

2) url ou

3) em outro lugar,

você precisa especificar a saída para um arquivo wav e eu não consigo encontrar exemplos, livros que dizem isto

 

De qualquer forma, é assim que funciona.

//+------------------------------------------------------------------+
//|                                                   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);
     }
  }
//+------------------------------------------------------------------+

somente o site está errado.

Tiro4

 
Alexsandr San:

então ele vai direto para a pastaArquivos etudo funciona bem

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

foi assim que o fiz.

♪ ele baixa e joga imediatamente ♪

Estou vendo, então está funcionando. Agora tudo o que resta à TC é resolver a solicitação pela web e está feito.