![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Je pense que j'arrive à quelque chose avec l'autorisation.
Demandez donc à Roman comment faire l'autorisation sur le serveur IBM avecWebRequest, c'est la question clé !
Roman, merci pour le commentaire! Je pense que nous allons nous débrouiller avec l'autorisation également.
Maintenant, quelques paramètres. Dans l'aide sur WebRequest il est indiqué
[in] En-têtes de requête de type "clé : valeur", séparés par un saut de ligne "\r\n".
La variable headers elle-même est de type string
Que voulez-vous dire, la chaîne contient un caractère de saut de ligne, c'est-à-dire la fin de la chaîne ?
vous devez avoir raison, et la capture d'écran de postman, où la paire de sortie est écrite dans l'en-tête de requête http est expliquée différemment ;)
je pense que nous parlons toujours de la même chose, mais avec des mots différents ;)
Je ne sais pas à quel point le facteur est mal écrit, ce qu'il est, et ce qu'il a à voir avec votre problème...
mais 90 % des problèmes sont résolus par la lecture, et c'est à la personne qui résout le problème de le lire.
C'est assez typique - il y a une documentation sur le service Rest-API (l'avez-vous lu d'ailleurs ??), vous avez la chance qu'ils aient donné un exemple avec curl et qu'il ne soit pas nécessaire d'analyser d'autres langages... et vous devez utiliser WebRequest MT.
Le curl démarre, le protocole est affiché à l'écran - quels en-têtes de paramètres sont générés et envoyés, ce qui est reçu en retour, comment il est compris et où il est placé.
Et il est directement visible ce qu'il faut envoyer à WebRequest
---
Je ne sais pas à quel point le facteur est écrit, ce qu'il est, ou ce qu'il a à voir avec votre problème...
mais 90% sont résolus par la lecture, et c'est à la personne qui résout le problème de le lire.
C'est assez typique - il y a une documentation sur le service Rest-API (l'avez-vous lu d'ailleurs ??), vous avez la chance qu'ils aient donné un exemple avec curl et qu'il ne soit pas nécessaire d'analyser d'autres langages... et vous devez utiliser WebRequest MT.
Le curl démarre, le protocole est affiché à l'écran - quels en-têtes de paramètres sont générés et envoyés, ce qui est reçu en retour, comment il est compris et où il est placé.
Et il est directement visible ce qu'il faut envoyer à WebRequest
---
lire, lire ) On y arrive et on progresse.
Je pense que j'arrive à quelque chose avec l'autorisation.
Roman, merci pour le commentaire! Je pense que nous allons nous débrouiller avec l'autorisation également.
Maintenant, à propos de quelques paramètres. Dans l'aide sur WebRequest, il est dit
[in] En-têtes de requête de type "clé : valeur", séparés par un saut de ligne "\r\n".
La variable headers elle-même est de type string
Que voulez-vous dire, la chaîne de caractères contient un caractère de retour à la ligne, c'est-à-dire un caractère de retour à la ligne ?
L'en-tête peut contenir plus d'une chaîne clé/valeur, un saut de ligne est donc utilisé.
Le double trait d'union"\r\n\r\n" doit être placé à la fin de l'en-tête.
C'est ainsi que le serveur comprend la fin de l'en-tête, qui est une norme http.
Après le double trait d'union, vient le corps de la demande ou de la réponse.
La fonctionWebRequest sépare ces blocs pour des raisons de commodité.
Pour les en-têtes son propre paramètre, pour le corps le sien.
Mais la syntaxe de l'écriture de la demande, exige le respect de la norme http.
de ce site webhttps://example-files.online-convert.com/audio/wav/example.wav
télécharge le fichier "example.wav".
et après l'avoir téléchargé, il jouePlaySound("\\Files\\\\Nexemple.wav");
-------------------------------------------------
Mais la signification de cette fonction ? ?? Je ne pense pas !
Eh bien, messieurs, passons à autre chose, d'accord ?
Tout d'abord, simplifions autant que possible le code de la requête elle-même. Ne laissons qu'un seul en-tête - l'autorisation elle-même, qui fonctionne toujours ! Dans ce cas, sans en-tête supplémentaire, le serveur IBM nous donnera un flux au format audio .ogg. Au diable tout ça, pensons-nous, faisons d'abord quelque chose qui fonctionne. Abandonnons les tentatives futiles de formater le flux en wav avec des en-têtes supplémentaires et occupons-nous du .ogg (à propos, une erreur similaire a été commise avec la syntaxe WebRequesthttps://www.mql5.com/en/forum/310891#comment_16643324 ).
Le script se connecte au serveur et se bloque. Ok, exécutons-le en mode débogage ou autre...
voir, non ? )
Nous supprimons le script du graphique, mais pour une raison quelconque, il n'arrête pas complètement son exécution, il interrompt simplement la requête Web synchrone et continue, ce qui est généralement à notre avantage.
Allons de l'avant. Dans char result[] nous avons maintenant un flux .ogg et nous l'écrivons dans un fichier.
Le fichier obtient 6Kb aussi (aussi, parce que la requête curl ou postman avec les mêmes paramètres retourne un fichier .ogg de 6Kb, qui est lu correctement ! C'est bon d'entendre le mot Test ))))
Maintenant nous écrivons tous les tableaux de chars dans le fichier. Précisez que nous ne devons pas mesurer la taille du tableau, mais prendreWHOLE_ARRAY.
C'est comme ça que ça se présente maintenant :
Le seul problème est que le fichier curl fonctionne bien, mais notre fichier, pour une raison quelconque, ne fonctionne pas.
Regardons à l'intérieur des deux fichiers
Fichier téléchargé par curl en bas, rempli à partir du flux WebRequest en binaire en haut.
Vous voyez ces taches 00000089, 00000004 dans le fichier testmql5.ogg ? ))) C'est un programme de bonus ou quoi ? ))) D'où vient tout cela ))))))))
Résumant
1. La syntaxe est toujours un mystère pour moi. J'ai seulement réussi à m'authentifier auprès du serveur, les tentatives d'ajouter d'autres en-têtes ont échoué jusqu'à présent.
2. Je me demande si WebRequest reçoit un flux avec des pépites, ou si je l'écris dans un fichier de manière incorrecte, mais le format du fichier .ogg obtenu à partir du résultat du tableau de caractères en utilisant la méthode WebRequest n'est pas correct.
Les tomates pourries sont les bienvenues !
de ce site webhttps://example-files.online-convert.com/audio/wav/example.wav
télécharge le fichier "example.wav".
et après l'avoir téléchargé, il jouePlaySound("\\Files\\\\Nexemple.wav");
-------------------------------------------------
Mais la signification de cette fonction ? ?? Je pense que ça n'a aucun sens !
Alexsandr,
C'est génial, merci ! Mais le fichier wav doit être généré par le moteur TTS (TextToSpeech).
Alexsandr,
Tout est génial, merci ! Mais le fichier wav doit être généré par un moteur TTS (TextToSpeech).
J'ai compris - ça devrait marcher...
Voici quelque chose de similairehttps://cloud.yandex.ru/docs/speechkit/tts/request
...
Résumer
1. La syntaxe est toujours un mystère pour moi. J'ai seulement réussi à m'authentifier auprès du serveur, les tentatives d'ajouter d'autres en-têtes ont échoué jusqu'à présent.
2. Je me demande si WebRequest reçoit un flux avec des pépites, ou si je l'écris dans un fichier de manière incorrecte, mais le format du fichier .ogg obtenu à partir du résultat du tableau de caractères en utilisant la méthode WebRequest est incorrect.
Les tomates pourries sont les bienvenues !