y de nuevo dll y el mercado - página 15

 
Реter Konow:
¿Qué significa un error 401?

introduzca "http 401" en Yandex y le dirá todo con detalle.

 
Nikolai Karetnikov:

resultado del código -"Webrequest4Voice(EURCHF,D1) Error de descarga 'https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/instances/9886a3ce-5734-455f-8f78-7a56381da686/v1/synthesize?text=TEST', código 401"

401 es queel servidor requiere autenticación

Tome un emulador de consultas (por ejemplo, postman) y haga una petición normal allí y luego transfiérala a mql.

O como escribió Maxim más arriba
 
Maxim Kuznetsov:

introduzca "http 401" en Yandex y le dirá todo con detalle.

¿Quién dijo que había un error en el http? El TC no lo explicó y tengo que buscarlo)))
 

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

descargado desde aquí sin problemas

Instantánea3

y reproduce el sonido

 
Alexsandr San:

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

descargado desde aquí sin problemas


¿Cómo se puede reproducir el archivo descargado si se escribe en la carpeta Files inmediatamente después de la descarga? Añade un par de líneas al código y podrás probarlo.
 
Реter Konow:
¿Y cómo es de reproducible el archivo descargado si PlaySound lo reproduce inmediatamente en la carpeta Files después de descargarlo? Añade un par de líneas al código y podrás probarlo.

para que vaya directamente a la carpetaFiles ytodo funcione bien

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

así es como lo hice.

*se descarga y se reproduce de inmediato*

         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:

para que vaya directamente a la carpetaFiles

Bien, ¿hay una llamada a PlaySound en el código después de eso? Para que, en cuanto se descargue, se reproduzca de inmediato.
 
Maxim Kuznetsov:

Para traducir una petición HTTP de las opciones de curl a los parámetros de WebRequest, hay que:

1. en general, mira la wikipedia para ver cómo está estructurado el HTTP

2. consulte la documentación de Curl para ver qué significan las opciones y por qué se utilizan

3. leer la ayuda de WebRequest y ver ejemplos, incluso en este hilo mucho

4. Debes escribir el código siendo consciente de lo que has hecho :-) qué, por qué y para qué se utiliza.

Evidentemente, esperas que los 4 puntos se hagan por ti. Entiendo que es fin de semana, que el tiempo es escaso y que tienes muchas ideas. Tiene que ser rápido.

Pero todavía tengo que hacerlo yo mismo.

Maxim, ) Bueno, ¿qué sentido tiene?

En curl sólo hay un parámetro - "-u" es autorización o usuario, seguido de apikey

En el archivo de ayuda de WebRequest, puedes averiguar cómo llenar el array json resultante con la respuesta de yahoo finance.

Todos los ejemplos de WebRequest en este hilo son el único script en la ayuda, que he publicado todo el tiempo )))).

Ser consciente de lo que se ha hecho: es difícil hacerlo sin un ejemplo. Los sitios que ofrecen comercialmente TTS tienen ejemplos con .NET, Java, curl, lenguajes de programación maduros, por así decirlo. No tienen ni idea de los niños como MQL.

Así que su puesto es importante en teoría, pero insignificante en su utilidad.

En concreto, para mí, por ejemplo, no está claro dónde:

1) cabeceras,

2) url o

3) en otro lugar,

hay que especificar la salida a un archivo wav y no encuentro ejemplos, libros que digan esto

 

De todos modos, así es como funciona.

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

sólo el sitio está mal.

Tiro4

 
Alexsandr San:

para que vaya directamente a la carpetaFiles ytodo funcione bien

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

así es como lo hice.

*se descarga y se reproduce de inmediato*

Ya veo, así que está funcionando. Ahora sólo falta que TC resuelva la webrequest y ya está.