et encore dll et marché - page 15

 
Реter Konow:
Que signifie une erreur 401 ?

Entrez "http 401" dans Yandex et il vous dit tout en détail.

 
Nikolai Karetnikov:

code result -"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 : leserveur requiert une authentification

Prenez un émulateur de requêtes (par exemple, postman) et faites une requête normale là-bas, puis transférez-la à mql.

Ou comme Maxim l'a écrit plus haut
 
Maxim Kuznetsov:

Entrez "http 401" dans Yandex et il vous dit tout en détail.

Qui a dit qu'il y avait une erreur http ? Le CT ne l'a pas expliqué et je dois le chercher ?))))
 

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

téléchargé d'ici sans aucun problème

Instantané3

et joue le son

 
Alexsandr San:

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

téléchargé d'ici sans aucun problème


Le fichier téléchargé est-il lisible s'il est écrit dans le dossier Files immédiatement après le téléchargement ? Ajoutez quelques lignes au code et vous pourrez le tester.
 
Реter Konow:
Et dans quelle mesure le fichier téléchargé est-il lisible si PlaySound le lit immédiatement dans le dossier Fichiers après l'avoir téléchargé ? Ajoutez quelques lignes au code et vous pourrez le tester.

donc ça va directement dans le dossierFiles ettout fonctionne bien.

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

c'est comme ça que je l'ai fait.

♪ il télécharge et joue tout de suite ♪

         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:

pour qu'il aille directement dans le dossierFiles

Ok, y a-t-il un appel PlaySound dans le code après cela ? Ainsi, dès qu'il est téléchargé, il est lu immédiatement.
 
Maxim Kuznetsov:

Pour traduire une requête HTTP des options curl en paramètres WebRequest, vous devez :

1. en général, regardez sur wikipedia pour voir comment HTTP est structuré

2. vérifiez dans la documentation Curl ce que signifient les options et pourquoi elles sont utilisées.

3. lire l'aide de WebRequest et voir des exemples, même dans ce fil de discussion beaucoup

4. vous devez écrire du code en étant conscient de ce que vous avez fait :-) quoi, pourquoi et pourquoi il est utilisé.

Vous attendez manifestement que les 4 points soient faits pour vous. Je comprends que c'est le week-end, que le temps est compté et que vous avez beaucoup d'idées. Il faut que ce soit rapide.

Mais je dois toujours le faire moi-même.

Maxim, ) Eh bien, quel est l'intérêt ?

Dans curl il n'y a qu'un seul paramètre - "-u" est l'autorisation ou l'utilisateur, suivi par apikey

Dans le fichier d'aide WebRequest, vous pouvez découvrir comment remplir le tableau json résultant avec la réponse de Yahoo Finance.

Tous les exemples de WebRequest dans ce fil de discussion sont le seul et unique script dans l'aide, que j'ai affiché tout le temps )))).

Être conscient de ce qui a été fait - c'est difficile à faire sans exemple. Les sites qui offrent commercialement le TTS ont des exemples avec .NET, Java, curl, des langages de programmation matures, pour ainsi dire. Ils n'ont même pas la moindre idée des enfants comme MQL.

Votre poste est donc important en théorie, mais insignifiant dans son utilité.

Plus précisément, pour moi, par exemple, ce n'est pas clair où :

1) les en-têtes,

2) url ou

3) ailleurs,

vous devez spécifier la sortie vers un fichier wav et je ne peux pas trouver d'exemples, de livres qui disent ceci

 

Bref, c'est comme ça que ça marche.

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

mais c'est le mauvais site.

Shot4

 
Alexsandr San:

donc ça va directement dans le dossierFiles ettout fonctionne bien.

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

c'est comme ça que je l'ai fait.

♪ il télécharge et joue tout de suite ♪

Je vois, donc ça marche. Maintenant, tout ce qui reste à faire pour TC est de régler la requête web et c'est fait.