ve yine dll ve market - sayfa 18

 

yetkilendirme ile, öyle görünüyor ki, gelişmiş

Реter Konow :

Öyleyse Roman'a IBM sunucusunda WebRequest ile nasıl yetki verileceğini sorun. Anahtar soru bu!

Roman, yorum için teşekkürler! Sanırım yetkilendirmeyi halledebiliriz.

Şimdi birkaç seçenek için. WebRequest yardım diyor

[içinde] Bir satır sonu "\r\n" ile ayrılmış "anahtar: değer" biçimindeki istek üstbilgileri.

başlıklar değişkeninin kendisi string türündedir

Bunun gibi, dize bir çeviri karakteri içeriyor, yani. satır sonları?

Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • www.mql5.com
Dozens of new automated trading applications appear in the MQL5 Market every day. Choose the right app among 10,000 products and forget about unnecessary routine operations of manual trading. Sell your algorithmic trading programs through the largest store of trading applications! Kiss on billions on EURUSD The provided robot (KOB) is a result...
 
Nikolai Karetnikov :

muhtemelen haklısın ve çıktı çiftinin http istek başlığında yazıldığı postacıdan bir ekran görüntüsü farklı şekilde açıklanıyor)

Hala aynı şeyden bahsettiğimizden şüpheleniyorum, sadece farklı kelimelerle)

Postacının nasıl çarpık eller yazıldığını, ne olduğunu ve görevinizle ne ilgisi olduğunu bilmiyorum ...

ama %90 okuyarak çözülür, sorunu çözen okumalı.

Bu oldukça tipik bir şey - bir Rest-API hizmet belgesi var (bu arada, okudunuz mu ??), curl ile bir örnek verdikleri için şanslısınız ve diğer dilleri ayrıştırmanıza gerek yok .. ve WebRequest MT aracılığıyla iletişime geçmeniz gerekir.

curl başlatılır, ekranda protokol görüntülenir - parametrelerden hangi başlıkların oluşturulduğu ve gönderildiği, neyin geri alındığı, nasıl anlaşıldığı ve nereye konduğu.

Ve orada WebRequest'i tam olarak ne göndereceğinizi açıkça görebilirsiniz.

---

 
Maxim Kuznetsov :

Postacının nasıl çarpık eller yazıldığını, ne olduğunu ve görevinizle ne ilgisi olduğunu bilmiyorum ...

ama %90 okuyarak çözülür, sorunu çözen okumalı.

Bu oldukça tipik bir şey - bir Rest-API hizmet belgesi var (bu arada, okudunuz mu ??), curl ile bir örnek verdikleri için şanslısınız ve diğer dilleri ayrıştırmanıza gerek yok .. ve WebRequest MT aracılığıyla iletişime geçmeniz gerekir.

curl başlatılır, ekranda protokol görüntülenir - parametrelerden hangi başlıkların oluşturulduğu ve gönderildiği, neyin geri alındığı, nasıl anlaşıldığı ve nereye konduğu.

Ve orada WebRequest'i tam olarak ne göndereceğinizi açıkça görebilirsiniz.

---

oku, oku) Anlıyoruz ve zaten ilerleme var.

 
Nikolai Karetnikov :

yetkilendirme ile, öyle görünüyor ki, gelişmiş

Roman, yorum için teşekkürler! Sanırım yetkilendirmeyi halledebiliriz.

Şimdi birkaç seçenek için. WebRequest yardım diyor

[içinde] Bir satır sonu "\r\n" ile ayrılmış "anahtar: değer" biçimindeki istek üstbilgileri.

başlıklar değişkeninin kendisi string türündedir

Bunun gibi, dize bir çeviri karakteri içeriyor, yani. satır sonları?

Başlık, birkaç anahtar/değer satırından oluşabilir, bu nedenle satır sonu kullanılır.
Başlığın sonuna çift tire "\r\n \r\n" yerleştirilmelidir.
Sunucu başlığın sonunu bu şekilde anlar, bu http standardıdır.
Çift sarmadan sonra istek veya yanıtın gövdesi gelir.
WebRequest fonksiyonunda kolaylık olması açısından bu blokların ayrılmasını yaptık.
Başlıkların kendi parametresi vardır, gövdenin kendi parametresi vardır.
Ancak bir istek yazma sözdizimi, http standardına uyumu gerektirir.

 
Devam et, teğmen.
 

//+------------------------------------------------------------------+
//|                                                   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[];
   string url= "https://example-files.online-convert.com/audio/wav/example.wav" ;
//--- для работы с сервером необходимо добавить URL "https://finance.yahoo.com"
//--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники"):
//--- обнуляем код последней ошибки
   ResetLastError ();
//--- загрузка html-страницы с Yahoo Finance
   int res= WebRequest ( "GET" ,url,cookie, NULL , 5000 ,post, 0 ,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);
     }
  }
//+------------------------------------------------------------------+

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

bu dosyayı "example.wav" yükler

ve indirdikten sonra kaybeder              PlaySound ( "\\Files\\example.wav" );

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

Bu fonksiyondan sadece anlam??? Bence - sıfır!

 

Pekala beyler, devam edelim.


 //+------------------------------------------------------------------+
//|                                                   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;
   
   ResetLastError ();
   ArrayFree (result);
   // headers = "Authorization: Basic YXBpa2V5OkdSMWJiM3pWTXM5ZmNOS0w2cEE5LTV6ajlwdFdsaUN1NmVoOW91cFVucFpC/r/n";
   headers = "Authorization: Basic YXBpa2V5OkdSMWJiM3pWTXM5ZmNOS0w2cEE5LTV6ajlwdFdsaUN1NmVoOW91cFVucFpC" ;
//   headers = headers + "Accept: audio/wav";
   //headers = headers + "Accept: 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" );
            
           }
         else
             printf ( "Ошибка в FileOpen. Код ошибки =" , GetLastError ());
        }
       else
         printf ( "Ошибка загрузки '%s', код %d" ,url,res);
     }
  }
//+------------------------------------------------------------------+


Öncelikle istek kodunu olabildiğince sadeleştirelim. Sadece bir başlık bırakalım - hala çalışan gerçek yetkilendirme! Bu sürümde, ek başlıklar olmadan, IBM sunucusu bize .ogg ses biçiminde bir akış verecektir. Ve canı cehenneme, diye düşünüyoruz, önce en azından bir şeyi çalıştıralım. Ek başlıklar ile wav'daki akışı biçimlendirmek için boş girişimleri bırakalım ve .ogg ile ilgilenelim.

Komut dosyası sunucuda yetkilendirilir ve kilitlenir. Tamam, hata ayıklama modunda veya başka bir şeyde çalışalım ...

görünür, hayır? )


Komut dosyasını grafikten çıkarıyoruz, ancak bir nedenle yürütmeyi tamamen durdurmaz, yalnızca eşzamanlı WebRequest'i keser ve devam eder, bu genellikle bizim için iyidir.

Devam et. char sonucu[]'da artık bir .ogg akışımız var ve onu bir dosyaya yazıyoruz.

Dosyanın boyutu da 6Kb'dir (ayrıca, tercih ettiğiniz gibi, aynı parametrelere sahip bir curl veya postacı isteği, olması gerektiği gibi çalan bir 6Kb .ogg dosyası döndürdüğü için! Test kelimesi iyi duyulur))))


Şimdi tüm char dizisini bir dosyaya yazıyoruz. Dizinin boyutunu ölçmenize gerek olmadığını özellikle belirtin, ancak WHOLE_ARRAY alın

Şimdi çok güzel:

Sorun bu, curl dosyası normal şekilde oynuyor, ancak dosyamız nedense çalışmıyor.

Her iki dosyanın içine bir göz atalım



Aşağıdaki curl ile indirilen, WebRequest akışından yukarıdaki ikili dosyaya yüklenen dosya

En üstteki testmql5.ogg dosyasındaki 00000089, 00000004 eklerini görüyor musunuz? ))) Bu bir bonus programı mı, yoksa ne? )))) Nereden çıktı )))))))))


özetliyorum

1. Sözdizimi benim için hala bir gizem. Yalnızca sunucuda oturum açmak mümkündü, şu ana kadar başka başlık ekleme girişimleri başarısız oldu

2. WebRequest inklüzyonları olan bir akışı kabul ediyor mu, yoksa onu dosyaya yanlış mı yazıyorum, ancak WebRequest yöntemiyle sonuç char dizisinden elde edilen .ogg dosyasının formatı yanlış

Çürük domatesler hoş geldiniz!

Send headers via WebRequest()
Send headers via WebRequest()
  • 2019.04.15
  • www.mql5.com
Hi, I am trying to use WebRequest to send a header and get a response. Basically I have the follow parameters: url: "http://www.b3.com.br/main...
 
Alexsandr San :

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

bu dosyayı "example.wav" yükler

ve indirdikten sonra kaybeder              PlaySound ( "\\Files\\example.wav" );

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

Bu fonksiyondan sadece anlam ??? Bence - sıfır!

İskender,

her şey harika, teşekkürler! Ancak wav dosyası TTS motoru tarafından oluşturulmalıdır (TextToSpeech)

 
Nikolai Karetnikov :

İskender,

her şey harika, teşekkürler! Ancak wav dosyası TTS motoru tarafından oluşturulmalıdır (TextToSpeech)

Bunu anlıyorum - çalışması gerekiyor ???

Синтез в реальном времени
Отправив текст для синтеза, ваш сервис или приложение сразу же получит в ответ аудиозапись: задержка настолько мала, что позволяет создавать программное обеспечение с потоковым воспроизведением.

enstantane fotoğraf

işte benzer bir şey https://cloud.yandex.ru/docs/speechkit/tts/request

 
Nikolai Karetnikov :

...

özetliyorum

1. Sözdizimi benim için hala bir gizem. Yalnızca sunucuda oturum açmak mümkündü, şu ana kadar başka başlık ekleme girişimleri başarısız oldu

2. WebRequest inklüzyonları olan bir akışı kabul ediyor mu, yoksa onu dosyaya yanlış mı yazıyorum, ancak WebRequest yöntemiyle sonuç char dizisinden elde edilen .ogg dosyasının formatı yanlış

Çürük domatesler hoş geldiniz!

Mantıklı düşünelim. Alexander, betiğin normalde dosyayı başka bir sunucudan yüklediğini ve oynattığını gösterdi. Bu nedenle, web isteği doğru şekilde yapılandırılmıştır. Sorun yalnızca IBM sunucusunun özelliklerindedir. Taleplere verdikleri yanıtlar açısından.