작업: 온라인 디스플레이를 사용하여 MQL5에서 일일 분석 구현 - 페이지 7 123456789 새 코멘트 [삭제] 2014.09.04 07:08 #61 누구든지 이 기능으로 작업한 예가 있습니까? 그렇지 않으면 이 주제에 대한 설명서가 없습니다! Alexandr Bryzgalov 2014.09.04 09:04 #62 IvanIvanov : 누구든지 이 기능으로 작업한 예가 있습니까? 그렇지 않으면 이 주제에 대한 설명서가 없습니다! 그것이 얼마나 조용한지, 모든 것이 거기에 그려져 있습니다. 머랭 코드에는 여기에서 유사하게 WinInet으로 작업하는 예가 있으며, 작동하고 입증된 예가 있습니다. void OnStart () { string cookie= NULL ,headers; char post[],result[]; int res; //--- для работы с сервером необходимо добавить URL "https://www.google.com/finance" //--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники"): string google_url= "https://www.google.com/finance" ; //--- обнуляем код последней ошибки ResetLastError (); //--- загрузка html-страницы с Google Finance res=WebRequest( "GET" ,google_url,cookie, NULL , 50 ,post, 0 ,result,headers); //--- проверка ошибок if (res==- 1 ) { Print ( "Ошибка в WebRequest. Код ошибки =" , GetLastError ()); //--- возможно URL отсутствует в списке, выводим сообщение о необходимости его добавления MessageBox ( "Необходимо добавить адрес '" +google_url+ "' в список разрешенных URL во вкладке 'Советники'" , "Ошибка" , MB_ICONINFORMATION ); } else { //--- успешная загрузка PrintFormat ( "Файл успешно загружен, Размер файла =%d байт." , ArraySize (result)); //--- сохраняем данные в файл int filehandle= FileOpen ( "GoogleFinance.htm" , FILE_WRITE | FILE_BIN ); //--- проверка ошибки if (filehandle!= INVALID_HANDLE ) { //--- сохраняем содержимое массива result[] в файл FileWriteArray (filehandle,result, 0 , ArraySize (result)); //--- закрываем файл FileClose (filehandle); } else Print ( "Ошибка в FileOpen. Код ошибки =" , GetLastError ()); } } Dmitriy Parfenovich 2014.09.04 09:09 #63 sanyooooook : 그것이 얼마나 조용한지, 모든 것이 거기에 그려져 있습니다. 그래서, 전부는 아닙니다. 레나트가 말했다 그것으로 무엇이든 할 수 있습니다 ... 도움말에 POST 요청의 예가 있습니까? 아니면 파일을 다운로드 하시겠습니까? Alexandr Bryzgalov 2014.09.04 09:16 #64 fyords : 그래서, 전부는 아닙니다. 레나트가 말했다 도움말에 POST 요청의 예가 있습니까? 아니면 파일을 다운로드 하시겠습니까? GET도 거기에 작성됩니다. 이는 GET 요청을 의미하며 POST이면 POST 요청입니다(게시 요청과 함께 더 많은 요청 매개변수를 보낼 수 있음). 결과 변수는 링크에 있는 내용에 기록됩니다. https://www.google.com/finance 그런 다음 결과가 파일에 기록되고 쓰기 위한 파일이 바이너리로 열립니다. 추신: 코드 기반에서 WinInet이 있는 예제를 찾으십시오. 여기에서도 마찬가지입니다. Dmitriy Parfenovich 2014.09.04 09:22 #65 sanyooooook : GET도 거기에 작성됩니다. 이는 GET 요청을 의미하며 POST이면 POST 요청입니다(게시 요청과 함께 더 많은 요청 매개변수를 보낼 수 있음). 결과 변수는 링크에 있는 내용에 기록됩니다. 그런 다음 결과가 파일에 기록되고 쓰기 위한 파일이 바이너리로 열립니다. 잘 이해했습니다. 도움말에는 예가 없습니다. 또한 POST 요청으로 텍스트가 아닌 데이터를 로드하는 것이 중요합니다. 추적된 요청, 항상 헤더로 전달 Content-Type: application/x-www-form-urlencoded 이미지를 업로드해야 할 것 같지만 Content-Type: multipart/form-data; Content-Type: image/jpeg Alexandr Bryzgalov 2014.09.04 09:30 #66 예전에 이렇게 해봤는데 안되고 사진에 안뜨네요. //+------------------------------------------------------------------+ //| HttpPOST.mq4 | //| Copyright © 2012, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2012, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #define INTERNET_FLAG_PRAGMA_NOCACHE 0x00000100 // не кешировать страницу #define INTERNET_FLAG_KEEP_CONNECTION 0x00400000 // не разрывать соединение #define INTERNET_FLAG_SECURE 0x00800000 #define INTERNET_FLAG_RELOAD 0x80000000 // получать страницу с сервера при обращении к ней #define INTERNET_OPEN_TYPE_PRECONFIG 0 // use registry configuration #define INTERNET_FLAG_KEEP_CONNECTION 0x00400000 // use keep-alive semantics #define INTERNET_SERVICE_HTTP 3 #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); // int InternetReadFile(int hFile, int& sBuffer[], int lNumBytesToRead, int& lNumberOfBytesRead[]); int InternetReadFile( int hFile, string sBuffer, int lNumBytesToRead, int & lNumberOfBytesRead[]); #import string Host= "secure.indx.ru" ; string Path= "/api/v1/tradejson.asmx" ; //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { int h= FileOpen ( "text.txt" , FILE_BIN | FILE_READ ); if (h< 0 ) return ; FileSeek (h, 0 , SEEK_SET ); int size= MathFloor ( FileSize (h)/ 4 ); if ( FileSize (h)% 4 != 0 )size++; 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, "" , "" , "Accept: text/json\r\n" , INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0 ); if (hResourceHandle<= 0 ) { Print ( "error HttpOpenRequest()" ); return ( 0 ); } Print (hResourceHandle); string Head= "Content-Type: application/x-www-form-urlencoded" ; int Len= StringLen (Head); result=HttpSendRequestA(hResourceHandle, Head, Len, data, size); Print (result); if (result<= 0 ) { Print ( "error HttpSendRequestA()" ); return ( 0 ); } //Print("Сука вот я дебил!!! )))"); int lReturn[] = { 1 }; string sBuffer = "" ; string strWebPage= "" ; int I= 0 ; while (! IsStopped ()) { if (InternetReadFile(hResourceHandle, sBuffer, 128 , lReturn) <= 0 || lReturn[ 0 ] == 0 ) { //Print(sBuffer); break ; } I++; Print (I); strWebPage = StringConcatenate (strWebPage, StringSubstr (sBuffer, 0 , lReturn[ 0 ])); } Print (strWebPage); InternetCloseHandle(hResourceHandle); InternetCloseHandle(hConnectHandle); InternetCloseHandle(hInternetSession); return ( 0 ); } //+------------------------------------------------------------------+ Dmitriy Parfenovich 2014.09.04 09:33 #67 아니요, DLL을 사용하면 무엇이든 할 수 있습니다. 예를 들어 주셔서 감사합니다. 저는 일반 도구인 WebRequest 에 관심이 있습니다. Alexandr Bryzgalov 2014.09.04 09:35 #68 fyords : 아니요, DLL을 사용하면 무엇이든 할 수 있습니다. 저는 일반 도구인 WebRequest에 관심이 있습니다. 내가 이해하는 것처럼 WinInet을 사용하는 것과 유추하여 수행하십시오. 헤더의 정확성에 문제가 있습니다. Dmitriy Parfenovich 2014.09.04 09:37 #69 sanyooooook : 내가 이해하는 것처럼 WinInet을 사용하여 유추하여 수행하십시오. 헤더의 정확성에 문제가 있습니다. 아니요, 문제는 WebRequest 가 자체 헤더를 생성하는 것을 허용하지 않는다는 것입니다. Alexandr Bryzgalov 2014.09.04 12:54 #70 어디에 게시해야합니까? 123456789 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
누구든지 이 기능으로 작업한 예가 있습니까? 그렇지 않으면 이 주제에 대한 설명서가 없습니다!
그것이 얼마나 조용한지, 모든 것이 거기에 그려져 있습니다.
머랭 코드에는 여기에서 유사하게 WinInet으로 작업하는 예가 있으며, 작동하고 입증된 예가 있습니다.
그것이 얼마나 조용한지, 모든 것이 거기에 그려져 있습니다.
그래서, 전부는 아닙니다. 레나트가 말했다
도움말에 POST 요청의 예가 있습니까? 아니면 파일을 다운로드 하시겠습니까?
그래서, 전부는 아닙니다. 레나트가 말했다
도움말에 POST 요청의 예가 있습니까? 아니면 파일을 다운로드 하시겠습니까?
GET도 거기에 작성됩니다. 이는 GET 요청을 의미하며 POST이면 POST 요청입니다(게시 요청과 함께 더 많은 요청 매개변수를 보낼 수 있음).
결과 변수는 링크에 있는 내용에 기록됩니다.
https://www.google.com/finance
그런 다음 결과가 파일에 기록되고 쓰기 위한 파일이 바이너리로 열립니다.
추신: 코드 기반에서 WinInet이 있는 예제를 찾으십시오. 여기에서도 마찬가지입니다.
GET도 거기에 작성됩니다. 이는 GET 요청을 의미하며 POST이면 POST 요청입니다(게시 요청과 함께 더 많은 요청 매개변수를 보낼 수 있음).
결과 변수는 링크에 있는 내용에 기록됩니다.
그런 다음 결과가 파일에 기록되고 쓰기 위한 파일이 바이너리로 열립니다.
잘 이해했습니다. 도움말에는 예가 없습니다.
또한 POST 요청으로 텍스트가 아닌 데이터를 로드하는 것이 중요합니다.
추적된 요청, 항상 헤더로 전달
이미지를 업로드해야 할 것 같지만
예전에 이렇게 해봤는데 안되고 사진에 안뜨네요.
아니요, DLL을 사용하면 무엇이든 할 수 있습니다.
예를 들어 주셔서 감사합니다.
저는 일반 도구인 WebRequest 에 관심이 있습니다.
아니요, DLL을 사용하면 무엇이든 할 수 있습니다.
저는 일반 도구인 WebRequest에 관심이 있습니다.
내가 이해하는 것처럼 WinInet을 사용하여 유추하여 수행하십시오. 헤더의 정확성에 문제가 있습니다.