e di nuovo dll e mercato - pagina 20

 
Alexsandr San:

Qui su questo sito - ho caricato un file di testo - e ho ottenuto un file .wav

la domanda è: come organizzarlo automaticamente?https://audio.online-convert.com/convert-to-wav

Solo in inglese.

Il tuo esempio è buono, ma su questo sito non c'è autorizzazione, cioè non c'è bisogno di specificare più intestazioni nella richiesta, e quindi non c'è bisogno di capire la sintassi di una tale voce.

Forse, forse mi sbaglio, ma non riesco a trovare nessun'altra spiegazione per la sospensione nel caso di un'intestazione e l'errore di autorizzazione nel caso di un'altra intestazione. Ecco il codice con due intestazioni

//+------------------------------------------------------------------+
//|                                                   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;
   
   ResetLastError();
   ArrayFree(result);
  // headers = "Authorization: Basic YXBpa2V5OkdSMWJiM3pWTXM5ZmNOS0w2cEE5LTV6ajlwdFdsaUN1NmVoOW91cFVucFpC/r/n";
   headers = "Authorization: Basic YXBpa2V5OkdSMWJiM3pWTXM5ZmNOS0w2cEE5LTV6ajlwdFdsaUN1NmVoOW91cFVucFpC";
//   headers = headers + "Accept: audio/wav";
   headers = headers + "/r/nAccept: audio/wav/r/n";
  // headers = headers + "Accept: audio/wav/r/n";
 
   string url="https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST";
               
   int res = WebRequest("GET",url,headers,1000,cost_char_data,result,result_headers);

   if(res==-1)
     {
      printf("Ошибка в WebRequest. Код ошибки  =",GetLastError());
      //--- возможно, URL отсутствует в списке, выводим сообщение о необходимости его добавления
      MessageBox("Необходимо добавить адрес '"+url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION);
     }
   else
     {
      if(res==200)
        {
         //--- успешная загрузка
         printf("Файл успешно загружен, размер %d байт.",ArraySize(result));
         printf("Заголовки сервера: %s",result_headers);
         //--- сохраняем данные в файл
         int filehandle=FileOpen("testmql5.ogg",FILE_WRITE|FILE_BIN);
         if(filehandle!=INVALID_HANDLE)
           {
            //--- сохраняем содержимое массива result[] в файл
            FileWriteArray(filehandle,result,0,WHOLE_ARRAY);
            //--- закрываем файл
            FileClose(filehandle);
            printf("FileClose");
            
           }
         else
            printf("Ошибка в FileOpen. Код ошибки =",GetLastError());
        }
      else
         printf("Ошибка загрузки '%s', код %d",url,res);
     }
  }
//+------------------------------------------------------------------+

non appena viene aggiunta la seconda intestazione, l'autorizzazione smette di funzionare

2020.06.01 12:46:45.044 Webrequest4Voice (EURAUD,H1) Errore di caricamento 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', codice 401

Con un'intestazione l'autorizzazione funziona, ma il flusso è guidato al file con caratteri extra che rendono impossibile riprodurre il file audio

 
Nikolai Karetnikov:

C'è un altro problema. Come diciamo tra esperti: "c'è una specie di malfunzionamento" )).

Appena sopra ho scritto in dettaglio come WebRequest si blocca ma riceve comunque un flusso. Il flusso arriva al file e risulta essere rotto. Forse lo sto mettendo nel file in modo errato, ma molto probabilmente l'array di char si riempie di informazioni estranee al momento dello stallo.

Questo è ciò di cui dovremmo occuparci ora

leggere (!!!) come http trasferisce i dati... qualcosa su chunked :-)

La prima riga del contenuto sono i dati di servizio (lunghezza se la memoria non mi inganna), e solo allora i dati del file binario

 
forse i caratteri /r/n line feed dovrebbero essere aggiunti alle intestazioni in modo diverso, forse qualcos'altro, come uno spazio all'inizio o alla fine dell'intestazione. Senza un esempio funzionante è difficile capirlo
Документация по MQL5: Основы языка / Типы данных / Целые типы / Символьные константы
Документация по MQL5: Основы языка / Типы данных / Целые типы / Символьные константы
  • www.mql5.com
Символы, как элемент строки, в MQL5 - это индексы в наборе символов Unicode. Они являются 16-разрядными значениями, которые можно преобразовывать в целые числа и с которыми можно манипулировать целочисленными операциями, такими как сложение и вычитание. Любой одиночный символ, заключенный в одинарные кавычки, или шестнадцатеричный ASCII-код...
 
Nikolai Karetnikov:

C'è un altro problema. Come diciamo tra esperti: "c'è una specie di malfunzionamento" )).

Appena la funzione WebRequest funziona in un modo specifico ed è internamente limitata per tale uso. "

Ho testato lo script e sono rimasto con la domanda: da dove viene la chiave?

Ho fatto una chiacchierata con il loro agente. La prima domanda che fece fu:

Ok non preoccuparti, stai usando un piano gratuito o a pagamento?

E un altro:

Salve, grazie per aver contattato IBM Cloud. Per l'assistenza tecnica vi consigliamo di controllare tutti i documenti disponibili a vostra disposizione, dato che siamo principalmente una piattaforma self service.

Ma, ha dato link dove si può parlare di più sull'argomento di interesse:https://www.ibm.com/watson in fondo c'è un'icona di chat Let's talk!

Inoltre, un altro link che mi ha dato ha aperto questa pagina:


Документация по MQL5: Сетевые функции / WebRequest
Документация по MQL5: Сетевые функции / WebRequest
  • www.mql5.com
Для использования функции WebRequest() следует добавить адреса серверов в список разрешенных URL во вкладке "Советники" окна "Настройки". Порт сервера выбирается автоматически на основе указанного протокола - 80 для "http://" и 443 для "https://". Функция WebRequest() является синхронной, это означает, что она приостанавливает выполнение...
 

A quanto pare, il servizio è a pagamento.

Fino a 10.000 caratteri al mese possono essere doppiati gratuitamente.

 
Реter Konow:

Questo rientra nel punto 3 - "Ola funzione WebRequest funziona in un modo specifico ed è internamente limitata per tale uso. "

Stavo testando lo script e sono rimasto con la domanda: DOVE viene la chiave?

Ho fatto una chiacchierata con il loro agente. La prima domanda che fece fu:

Ok non preoccuparti, stai usando un piano gratuito o a pagamento?

E un altro:

Salve, grazie per aver contattato IBM Cloud. Per l'assistenza tecnica vi consigliamo di controllare tutti i documenti disponibili a vostra disposizione, dato che siamo principalmente una piattaforma self service.

Ma, ha dato link dove si può parlare di più sull'argomento di interesse:https://www.ibm.com/watson in fondo c'è un'icona di chat Let's talk!

Inoltre, un altro link che mi ha dato ha aperto questa pagina:


Maxim Kuznetsov:

leggere (!!!) che tipo di dati dà http...qualcosa su chunked :-)

nel contenuto, la prima riga sono i dati di servizio (lunghezza se la memoria non mi inganna), e solo allora i dati del file binario

Grazie!

Ho letto alcune informazioni, ho trovato un errore nel mio codice, l'ho corretto, WebRequest ha smesso di bloccarsi e ottiene il flusso, ma vedo comunque le seguenti informazioni nel file

Ci deve essere un altro "qualcosa di sbagliato" da qualche parte ))

 
Guardate la foto. Piano gratuito fino a 10.000 caratteri al mese.
 
Maxim Kuznetsov:

leggere (!!!) come http dà i dati...qualcosa su chunked :-)

la prima riga del contenuto contiene dati di servizio (lunghezza, se la memoria non mi inganna), e solo allora i dati binari del file

cioè ora capisco che nel flusso recuperabile


00000089 è un dato di servizio, ma non capisco come farlo ignorare

 
Реter Konow:
Guarda la foto. Il piano gratuito è fino a 10.000 caratteri al mese.

Sì, sì, hai ragione. Ne ho scritto anche qui prima

и снова dll и маркет
и снова dll и маркет
  • 2020.05.31
  • www.mql5.com
День добрый! Правило №1 dll на Маркете запрещен...
 
Реter Konow:
Guardate la foto. Piano gratuito fino a 10.000 caratteri al mese.

quando ti registri sul loro sito web e segui le istruzioni, ad un certo punto appare una pagina dove è elencata l'apikey