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 |//+------------------------------------------------------------------+voidOnStart()
{
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");
}
elseprintf("Ошибка в FileOpen. Код ошибки =",GetLastError());
}
elseprintf("Ошибка загрузки '%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.
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 - это индексы в наборе символов Unicode. Они являются 16-разрядными значениями, которые можно преобразовывать в целые числа и с которыми можно манипулировать целочисленными операциями, такими как сложение и вычитание. Любой одиночный символ, заключенный в одинарные кавычки, или шестнадцатеричный ASCII-код...
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 :
Для использования функции WebRequest() следует добавить адреса серверов в список разрешенных URL во вкладке "Советники" окна "Настройки". Порт сервера выбирается автоматически на основе указанного протокола - 80 для "http://" и 443 для "https://". Функция WebRequest() является синхронной, это означает, что она приостанавливает выполнение...
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 ;))
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
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.
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.
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 :
Apparemment, le service est payant.
Jusqu'à 10 000 caractères par mois peuvent être exprimés gratuitement.
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 :
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 ;))
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
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
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.