mql4에서 데이터를 해시하는 방법 배우기 - 페이지 4

 
Reshetov :

사실, 모든 것은 id=value 형식으로 GET 및 POST 요청으로 전송됩니다. 매개변수 이름과 값은 등호로 구분됩니다. 또한 라틴 문자 및 숫자가 아닌 모든 문자는 %(문자 코드)로 인코딩됩니다.

뭔가 잘못된 것 같아요. 이것도 작동하지 않습니다.

   if (!HttpSendRequestA(hReq, NULL , 0 , request, len))
  {
     return ( false );
  }
 

여기 있는 토피스터가 내 연구에 지쳤을지도 모르지, 한마디만 하면 수도원에 갈게.

추신: 결국 코드는 비트코인에서 작동합니다

 
감사합니다
 
sanyooooook :

나한테 묻는거야?

보다 예: https://www.mql5.com/ru/articles/276
 //------------------------------------------------------------------ SendData
bool SendData( string file, string mode)
{
   string smb= Symbol ();
   string Head= "Content-Type: application/x-www-form-urlencoded" ; // заголовок
   string Path= "/mt5swap/metaswap.php" ; // путь к странице
   string Data= "server=" + AccountInfoString ( ACCOUNT_SERVER )+
               "&pair=" +smb+
               "&long=" +DTS( SymbolInfoDouble (smb, SYMBOL_SWAP_LONG ))+
               "&short=" +DTS( SymbolInfoDouble (smb, SYMBOL_SWAP_SHORT ));

  tagRequest req; // инициализация параметров
   if (mode== "GET" )  req.Init(mode, Path+ "?" +Data, Head, "" ,   false , file, true );
   if (mode== "POST" ) req.Init(mode, Path,          Head, Data, false , file, true );

   return (INet.Request(req)); // посылаем запрос на сервер
}
 

이조차도 작동하지 않습니다.

 #import "wininet.dll"
         int InternetAttemptConnect( int x);
   int InternetOpenA( string sAgent, int lAccessType, string sProxyName= "" , string sProxyBypass= "" , int lFlags = 0 );
         int InternetConnectA( int hInternet, string lpszServerName, /*WORD*/ int nServerPort, string lpszUsername, string lpszPassword, int dwService, int dwFlags,   int dwContext);
   int HttpOpenRequestA( int hConnect, string lpszVerb, string lpszObjectName, string lpszVersion, string lpszReferer, string lplpszAcceptTypes, int dwFlags, int dwContext);
   int HttpSendRequestA( int hRequest, string lpszHeaders, int dwHeadersLength, int & lpOptional[], int dwOptionalLength);
   int InternetCloseHandle( int hInet);
#import

#define INTERNET_OPEN_TYPE_PRECONFIG   0    // use registry configuration
#define INTERNET_FLAG_KEEP_CONNECTION   0x00400000    // use keep-alive semantics
#define INTERNET_SERVICE_HTTP   3

//+------------------------------------------------------------------+
int start()
{
         string Host= "https://secure.indx.ru" ;
         string Path= "https://secure.indx.ru/api/v1/tradejson.asmx" ;
        
         // читаем данные 
         int h= FileOpen ( "text.txt" , FILE_BIN | FILE_READ ); if (h< 0 ) return ;
         FileSeek (h, 0 , SEEK_SET );       int size= MathFloor ( FileSize (h)/ 4 );
         int data[], i= 0 ;         ArrayResize (data, size); // изменили размер
         while (! FileIsEnding (h)) { data[i]= FileReadInteger (h, LONG_VALUE); i++; }
         FileClose (h); // 
         // выводим прочитанный массив для проверки
         string st= "" ;
         for (i= 0 ; i<size; i++) 
        {
                st=st+CharToStr(data[i]& 255 ); st=st+CharToStr(data[i]>> 8 & 255 ); 
                st=st+CharToStr(data[i]>> 16 & 255 ); st=st+CharToStr(data[i]>> 24 & 255 ); 
        }
         Print ( "Размер файла: " +size* 4 + "  байт" );
         Print ( "Данные: " +st);
        
         int hInternetSession, hConnectHandle, hResourceHandle, result;
         if (InternetAttemptConnect( 0 )!= 0 ) { Print ( "error InternetAttemptConnect" ); return ( 0 ); }
        hInternetSession=InternetOpenA( "Microsoft Internet Explorer" ,  INTERNET_OPEN_TYPE_PRECONFIG, "" , "" , 0 ); 
         if (hInternetSession<= 0 ) { Print ( "error InternetOpenA()" ); return ( 0 ); }
        
        hConnectHandle=InternetConnectA(hInternetSession, Host, 80 , "" , "" , INTERNET_SERVICE_HTTP, 0 , 0 ); 
         if (hConnectHandle<= 0 ) { Print ( "error InternetConnect()" ); return ( 0 ); }
        
        hResourceHandle=HttpOpenRequestA(hConnectHandle, "POST" , Path, "" , "" , "" , INTERNET_FLAG_KEEP_CONNECTION, 0 ); 
         if (hResourceHandle<= 0 ) { Print ( "error HttpOpenRequest()" ); return ( 0 ); }
        
        result=HttpSendRequestA(hResourceHandle, "Content-Type: application/x-www-form-urlencoded" , 47 , data, size);
         Print (result);
         if (result<= 0 ) { Print ( "error HttpSendRequestA()" ); return ( 0 ); }
        
        InternetCloseHandle(hResourceHandle);
        InternetCloseHandle(hConnectHandle);
        InternetCloseHandle(hInternetSession);
}
//+------------------------------------------------------------------+
 

json도 여기서 작동하지 않을 것 같습니다.

기본 매개변수로 시작됨, 롤링되지 않음, 게시물 전송 기능 오류

HttpSendRequestwW
 
이 기능에 문제가 있는 것 같습니다. 댓글 로 판단하면 저 혼자는 작동하지 않습니다.
 
sanyooooook :
이 기능에 문제가 있는 것 같습니다. 댓글 로 판단하면 저 혼자는 작동하지 않습니다.
https://www.mql5.com/ru/articles/276
 

기사를 보니 server=Metaquotes&pair=EURUSD&bid=1.4512&time=13286794 와 같은 전송이 있습니다.

json 형식으로 보내야 합니다. 내가 이해하는 한 모든 것이 동일합니다. 빨간색 선 대신 여기에 매개변수가 있습니다. {"Login":"","Wmid":"","Culture":"","Signature" :""}

전송이 계속되면 적어도 요청이 올바르지 않다는 오류가 반환되지만 대신 침묵이 발생합니다.

 
sanyooooook :

기사를 보니 server=Metaquotes&pair=EURUSD&bid=1.4512&time=13286794 와 같은 전송이 있습니다.

json 형식으로 보내야 합니다. 내가 이해하는 한 모든 것이 동일합니다. 빨간색 선 대신 여기에 매개변수가 있습니다. {"Login":"","Wmid":"","Culture":"","Signature" :""}

글쎄요. 글쎄, 나는 당신이 보내는 방법 (POST)과 그 안에있는 데이터 형식 (귀하의 경우 json)을 혼동하지 않기를 바랍니다.

전송이 계속되면 적어도 요청이 올바르지 않다는 오류가 반환되지만 대신 침묵이 발생합니다.

산, 글쎄요, 찰스를 좀 쓰세요. 왜 이렇게 고생하세요 :)