et encore dll et marché - page 20

 
Alexsandr San:

Ici, sur ce site, j'ai téléchargé un fichier texte et j'ai obtenu un fichier .wav.

La question est de savoir comment l'organiser automatiquement... https://audio.online-convert.com/convert-to-wav

En anglais seulement.

Votre exemple est bon, mais sur ce site, il n'y a pas d'autorisation, c'est-à-dire qu'il n'y a pas besoin de spécifier plusieurs en-têtes dans la requête, et donc pas besoin de comprendre la syntaxe d'une telle entrée.

Peut-être, peut-être que je me trompe, mais je ne trouve pas d'autre explication à la suspension dans le cas d'un en-tête et à l'erreur d'autorisation dans le cas d'un autre en-tête. Voici le code avec deux en-têtes

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

dès que le deuxième en-tête est ajouté, l'autorisation cesse de fonctionner

2020.06.01 12:46:45.044 Webrequest4Voice (EURAUD,H1) Erreur de téléchargement 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', code 401

Avec un seul en-tête, l'autorisation fonctionne, mais le flux est conduit au fichier avec des caractères supplémentaires qui rendent impossible la lecture du fichier audio.

 
Nikolai Karetnikov:

Il y a un autre problème. Comme on dit chez les experts : "il y a une sorte de dysfonctionnement" )).

Juste au-dessus, j'ai écrit en détail comment WebRequest se fige mais reçoit néanmoins un flux. Le flux atteint le fichier et s'avère être cassé. Peut-être que je le mets dans le fichier de manière incorrecte, mais il est plus probable que le tableau de chars soit rempli d'informations étrangères au moment de l'impasse.

C'est ce dont nous devons nous occuper maintenant

lisez ( !!!) comment http transfère les données... quelque chose à propos de chunked :-)

La première ligne du contenu est constituée des données du service (longueur si ma mémoire est bonne), et seulement ensuite des données du fichier binaire.

 
peut-être que les caractères de saut de ligne /r/n devraient être ajoutés aux en-têtes différemment, peut-être quelque chose d'autre, comme un espace au début ou à la fin de l'en-tête. Sans un exemple concret, il est difficile de comprendre.
Документация по MQL5: Основы языка / Типы данных / Целые типы / Символьные константы
Документация по MQL5: Основы языка / Типы данных / Целые типы / Символьные константы
  • www.mql5.com
Символы, как элемент строки, в MQL5 - это индексы в наборе символов Unicode. Они являются 16-разрядными значениями, которые можно преобразовывать в целые числа и с которыми можно манипулировать целочисленными операциями, такими как сложение и вычитание. Любой одиночный символ, заключенный в одинарные кавычки, или шестнадцатеричный ASCII-код...
 
Nikolai Karetnikov:

Il y a un autre problème. Comme on dit chez les experts : "il y a une sorte de dysfonctionnement" )).

Juste la fonction WebRequest fonctionne d'une manière spécifique et est limitée en interne à cet usage. "

J'ai testé le script et je reste avec la question suivante : d'où vient la clé ?

J'ai discuté avec leur agent. La première question qu'il a posée était :

Ok pas d'inquiétude, utilisez-vous un plan gratuit ou payant ?

Et une autre :

Bonjour, merci d'avoir contacté IBM Cloud. Pour l'assistance technique, nous vous recommandons de consulter tous les documents disponibles, car nous sommes principalement une plateforme de libre-service.

Mais, a donné des liens où vous pouvez parler plus sur le sujet d'intérêt: https://www.ibm.com/watson en bas il y a une icône de chat Parlons-en !

De plus, un autre lien qu'il m'a donné a ouvert cette page :


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

Apparemment, le service est payant.

Jusqu'à 10 000 caractères par mois peuvent être exprimés gratuitement.

 
Реter Konow:

Cela relève du point 3 - "Soitla fonction WebRequest fonctionne d'une manière spécifique et est limitée en interne à cet usage. "

Je testais le script et je me suis retrouvé avec la question suivante : d'où vient la clé ?

J'ai discuté avec leur agent. La première question qu'il a posée était :

Ok pas d'inquiétude, utilisez-vous un plan gratuit ou payant ?

Et une autre :

Bonjour, merci d'avoir contacté IBM Cloud. Pour l'assistance technique, nous vous recommandons de consulter tous les documents disponibles, car nous sommes principalement une plateforme de libre-service.

Mais, a donné des liens où vous pouvez parler plus sur le sujet d'intérêt: https://www.ibm.com/watson en bas il y a une icône de chat Parlons-en !

De plus, un autre lien qu'il m'a donné a ouvert cette page :


Maxim Kuznetsov:

lire ( !!!) quel type de données http donne...quelque chose à propos de chunked :-)

dans le contenu, la première ligne est constituée des données de service (longueur si ma mémoire est bonne), et seulement ensuite les données du fichier binaire.

Merci !

J'ai lu quelques informations, j'ai trouvé une erreur dans mon code, je l'ai corrigée, WebRequest a cessé de se bloquer et obtient le flux, mais je vois quand même l'information suivante dans le fichier

Il doit y avoir un autre "quelque chose qui cloche" quelque part ;))

 
Regardez l'image. Plan gratuit jusqu'à 10 000 caractères par mois.
 
Maxim Kuznetsov:

lire ( !!!) comment http donne les données...quelque chose à propos de chunked :-)

la première ligne du contenu contient les données du service (longueur, si ma mémoire est bonne), et seulement ensuite les données du fichier binaire

c'est à dire que je comprends maintenant que dans le flux récupérable


00000089 est une donnée de service, mais je ne comprends pas comment faire pour qu'il ignore

 
Реter Konow:
Regardez l'image. Le plan gratuit permet d'atteindre 10 000 caractères par mois.

Oui, oui, vous avez raison. J'en ai déjà parlé ici aussi

и снова dll и маркет
и снова dll и маркет
  • 2020.05.31
  • www.mql5.com
День добрый! Правило №1 dll на Маркете запрещен...
 
Реter Konow:
Regardez l'image. Plan gratuit jusqu'à 10 000 caractères par mois.

lorsque vous vous enregistrez sur leur site web et que vous suivez les instructions, une page apparaît à un moment donné où l'apikey est listée.