e di nuovo dll e mercato - pagina 15

 
Реter Konow:
Cosa significa un errore 401?

Inserisci "http 401" in Yandex e ti dice tutto in dettaglio.

 
Nikolai Karetnikov:

codice risultato -"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 è ilserver richiede l'autenticazione

Prendete un emulatore di query (ad esempio postman) e fate una normale richiesta lì e poi trasferitela a mql.

O come ha scritto Maxim sopra
 
Maxim Kuznetsov:

Inserisci "http 401" in Yandex e ti dice tutto in dettaglio.

Chi ha detto che c'era un errore http? Il TC non l'ha spiegato e devo cercarlo?)))
 

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

scaricato da qui senza problemi

Istantanea3

e riproduce il suono

 
Alexsandr San:

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

scaricato da qui senza problemi


Quanto è riproducibile il file scaricato se viene scritto nella cartella Files immediatamente dopo il download? Aggiungete un paio di righe al codice e potrete testarlo.
 
Реter Konow:
E quanto è riproducibile il file scaricato se PlaySound lo riproduce immediatamente nella cartella Files dopo averlo scaricato? Aggiungete un paio di righe al codice e potrete testarlo.

quindi va direttamente alla cartellaFiles etutto funziona bene

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

è così che ho fatto.

# Si scarica e suona subito #

         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:

quindi va direttamente alla cartellaFiles

Ok, c'è una chiamata PlaySound nel codice dopo questo? In modo che non appena viene scaricato, suona subito.
 
Maxim Kuznetsov:

Per tradurre una richiesta HTTP da opzioni curl a parametri WebRequest, è necessario:

1. in generale, guardate wikipedia per vedere come è strutturato HTTP

2. controllare la documentazione di Curl per vedere cosa significano le opzioni e perché sono usate

3. leggere la guida WebRequest e vedere gli esempi, anche in questo thread molto

4. Dovreste scrivere codice essendo consapevoli di ciò che avete fatto :-) cosa, perché e perché viene usato.

Ovviamente vi aspettate che tutti e 4 i punti siano fatti per voi. Capisco che è il fine settimana, il tempo è poco e avete un sacco di idee. Deve essere veloce.

Ma devo comunque farlo da solo.

Maxim, ) Beh, qual è il punto?

In curl c'è solo un parametro - "-u" è autorizzazione o utente, seguito da apikey

Nel file di aiuto di WebRequest, puoi capire come riempire l'array json risultante con la risposta di yahoo finance.

Tutti gli esempi di WebRequest in questo thread sono il solo e unico script nell'aiuto, che ho postato tutto il tempo )))).

Essere consapevoli di ciò che è stato fatto - è difficile farlo senza un esempio. I siti che offrono commercialmente TTS hanno esempi con .NET, Java, curl, linguaggi di programmazione maturi, per così dire. Non hanno nemmeno un'idea dei bambini come MQL.

Quindi il tuo post è importante in teoria, ma insignificante nella sua utilità.

In particolare, per me, per esempio, non è chiaro dove:

1) intestazioni,

2) url o

3) da qualche altra parte,

è necessario specificare l'output in un file wav e non riesco a trovare esempi, libri che dicano questo

 

Comunque, è così che funziona.

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

solo che è il sito sbagliato.

Colpo4

 
Alexsandr San:

quindi va direttamente alla cartellaFiles etutto funziona bene

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

è così che ho fatto.

# Si scarica e suona subito #

Capisco, quindi funziona. Ora tutto quello che resta da fare per TC è sistemare la webrequest ed è fatta.