und wieder dll und Markt - Seite 15

 
Реter Konow:
Was bedeutet ein 401-Fehler?

Geben Sie "http 401" in Yandex ein, und Sie erfahren alles im Detail.

 
Nikolai Karetnikov:

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

401 istServer erfordert Authentifizierung

Nehmen Sie einen Abfrageemulator (z.B. postman) und stellen Sie dort eine normale Anfrage und übertragen Sie diese dann an mql.

Oder wie Maxim oben schrieb
 
Maxim Kuznetsov:

Geben Sie "http 401" in Yandex ein, und Sie erfahren alles im Detail.

Wer sagt, dass ein http-Fehler vorliegt? Der TC hat es nicht erklärt und ich muss es nachschlagen?)))
 

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

ohne Probleme von hier heruntergeladen

Schnappschuss3

und spielt den Ton ab

 
Alexsandr San:

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

ohne Probleme von hier heruntergeladen


Wie abspielbar ist die heruntergeladene Datei, wenn sie sofort nach dem Herunterladen in den Ordner "Dateien" geschrieben wird? Fügen Sie dem Code ein paar Zeilen hinzu, und Sie können ihn testen.
 
Реter Konow:
Und wie abspielbar ist die heruntergeladene Datei, wenn PlaySound sie sofort nach dem Herunterladen im Ordner "Dateien" abspielt? Fügen Sie dem Code ein paar Zeilen hinzu, und Sie können ihn testen.

so dass es direkt in den Ordner "Dateien" geht undalles einwandfrei funktioniert

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

So habe ich es gemacht.

♪ Es lädt herunter und spielt sofort ♪

         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:

damit sie direkt in den Ordner "Dateien" gelangt

Ok, gibt es einen PlaySound-Aufruf im Code danach? So wird die Datei sofort nach dem Herunterladen abgespielt.
 
Maxim Kuznetsov:

Um eine HTTP-Anfrage von curl-Optionen in WebRequest-Parameter zu übersetzen, müssen Sie Folgendes tun:

1. Schauen Sie generell bei Wikipedia nach, wie HTTP strukturiert ist.

2. Schauen Sie in der Curl-Dokumentation nach, was die Optionen bedeuten und warum sie verwendet werden

3. lesen Sie die WebRequest-Hilfe und sehen Sie Beispiele, auch in diesem Thread eine Menge

4. man sollte Code schreiben und sich dabei bewusst sein, was man getan hat :-) was, warum und wofür er verwendet wird.

Sie erwarten offensichtlich, dass alle 4 Punkte für Sie erledigt werden. Ich weiß, es ist Wochenende, die Zeit ist knapp, und Sie haben viele Ideen. Es muss schnell gehen.

Aber ich muss es trotzdem selbst tun.

Maxim, ) Nun, was soll das bringen?

In curl gibt es nur einen Parameter - "-u" ist die Autorisierung oder der Benutzer, gefolgt von apikey

In der WebRequest-Hilfedatei können Sie herausfinden, wie Sie das resultierende json-Array mit der Antwort von Yahoo Finance füllen können.

Alle WebRequest-Beispiele in diesem Thread sind das einzige Skript in der Hilfe, das ich die ganze Zeit gepostet habe )))).

Sich dessen bewusst sein, was getan wurde - ohne Beispiel ist das schwer zu erreichen. Websites, die TTS kommerziell anbieten, haben Beispiele mit .NET, Java, curl, sozusagen ausgereifte Programmiersprachen. Sie haben nicht einmal eine Ahnung von Kindern wie MQL.

Ihr Beitrag ist also theoretisch wichtig, aber in seiner Nützlichkeit unbedeutend.

Für mich ist zum Beispiel nicht klar, wo:

1) Kopfzeilen,

2) url oder

3) irgendwo anders,

Sie müssen die Ausgabe in eine wav-Datei angeben, und ich kann keine Beispiele oder Bücher finden, in denen dies steht

 

Wie auch immer, so funktioniert es.

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

nur der Standort ist falsch.

Schuss4

 
Alexsandr San:

so dass es direkt in den Ordner "Dateien" geht undalles einwandfrei funktioniert

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

So habe ich es gemacht.

♪ Es lädt herunter und spielt sofort ♪

Ich verstehe, es funktioniert also. Jetzt muss TC nur noch den Webrequest erledigen, und das war's.