В новом билде будет доступна расширенная версия функции WebRequest(). Вот пример авторизации на сайте mql5.com и послледующей публикации поста в ленте пользователя.
//+------------------------------------------------------------------+
//| WebRequest.mq5 |
//| Copyright 2015, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property link"http://www.mql5.com"#property version"1.00"#property strict#property script_show_inputs#property description"Пример скрипта, который публикует сообщение "#property description"пользователя в ленте на mql5.com"inputstring InpLogin =""; //Ваш аккаунт в MQL5.cominputstring InpPassword=""; //Пароль для вашего аккаунтаinputstring InpFileName="EURUSDM5.png"; //Картинка в папке MQL5/Files/inputstring InpFileType="image/png"; //Правильный mime type картинки//+------------------------------------------------------------------+//| Публикация сообщения с картинкой в ленте mql5.com |//+------------------------------------------------------------------+bool PostToNewsFeed(string login,string password,string text,string filename,string filetype)
{
int res; // для помещения результата выполнения операцийchar data[]; // массив с данными для отправки POST-запросовchar file[]; // сюда прочитаем картинкуstring str="Login="+login+"&Password="+password;
string auth,sep="-------Jyecslin9mp8RdKV"; // разделитель данных формата multipart//--- имеется файл - пробуем прочитать егоif(filename!=NULL && filename!="")
{
res=FileOpen(filename,FILE_READ|FILE_BIN);
if(res<0)
{
Print("Ошибка открытия файла \""+filename+"\"");
return(false);
}
//--- читаем данные файлаif(FileReadArray(res,file)!=FileSize(res))
{
FileClose(res);
Print("Ошибка чтения файла \""+filename+"\"");
return(false);
}
//---FileClose(res);
}
//--- сформируем тело POST запроса на авторизациюArrayResize(data,StringToCharArray(str,data,0,WHOLE_ARRAY,CP_UTF8)-1);
//--- сбросим код ошибкиResetLastError();
//--- выполняем запрос на автиризацию
res=WebRequest("POST","https://www.mql5.com/ru/auth_login",NULL,0,data,data,str);
//--- если авторизация не удаласьif(res!=200)
{
Print("Ошибка авторизации #"+(string)res+", LastError="+(string)GetLastError());
return(false);
}
//--- вычитаем из заголовка ответа сервера авторизационную куку
res=StringFind(str,"Set-Cookie: auth=");
//--- если кука не найдена - сообщим об ошибкеif(res<0)
{
Print("Ошибка, данные авторизации не найдены в ответе сервера (проверте логин/пароль)");
return(false);
}
//--- запомним авторизационные данные и сформируем заголовок для последующих запросов
auth=StringSubstr(str,res+12);
auth="Cookie: "+StringSubstr(auth,0,StringFind(auth,";")+1)+"\r\n";
//--- если имеется файл данных - отправляем его на серверif(ArraySize(file)!=0)
{
//--- сформируем тело запроса
str="--"+sep+"\r\n";
str+="Content-Disposition: form-data; name=\"attachedFile_imagesLoader\"; filename=\""+filename+"\"\r\n";
str+="Content-Type: "+filetype+"\r\n\r\n";
res =StringToCharArray(str,data);
res+=ArrayCopy(data,file,res-1,0);
res+=StringToCharArray("\r\n--"+sep+"--\r\n",data,res-1);
ArrayResize(data,ArraySize(data)-1);
//--- сформируем заголовок запроса
str=auth+"Content-Type: multipart/form-data; boundary="+sep+"\r\n";
//--- сбросим код ошибкиResetLastError();
//--- выполняем запрос на передачу файла изображения на сервер
res=WebRequest("POST","https://www.mql5.com/upload_file",str,0,data,data,str);
//--- проверим результат запросаif(res!=200)
{
Print("Ошибка передачи файла на сервер #"+(string)res+", LastError="+(string)GetLastError());
return(false);
}
//--- получим ссылку на картинку, которую загрузили на сервер
str=CharArrayToString(data);
if(StringFind(str,"{\"Url\":\"")==0)
{
res =StringFind(str,"\"",8);
filename=StringSubstr(str,8,res-8);
//--- при ошибке закачки файла, вернётся пустая ссылкаif(filename=="")
{
Print("Передача файла на сервер не удалась");
return(false);
}
}
}
//--- сформируем тело запроса публикации сообщения на сервере
str ="--"+sep+"\r\n";
str+="Content-Disposition: form-data; name=\"content\"\r\n\r\n";
str+=text+"\r\n";
//--- на каких языках сайта mql5.com будет доступна публикация
str+="--"+sep+"\r\n";
str+="Content-Disposition: form-data; name=\"AllLanguages\"\r\n\r\n";
str+="on\r\n";
//--- если картинка была загружена на сервер - передадим ссылку на неёif(ArraySize(file)!=0)
{
str+="--"+sep+"\r\n";
str+="Content-Disposition: form-data; name=\"attachedImage_0\"\r\n\r\n";
str+=filename+"\r\n";
}
//--- завершающая строка multipart-запроса
str+="--"+sep+"--\r\n";
//--- собираем тело POST-запроса в одну строку StringToCharArray(str,data,0,WHOLE_ARRAY,CP_UTF8);
ArrayResize(data,ArraySize(data)-1);
//--- подготовим заголовок запроса
str=auth+"Content-Type: multipart/form-data; boundary="+sep+"\r\n";
//--- выполняем запрос на публикацию сообщение в ленте пользователя mql5.com
res=WebRequest("POST","https://www.mql5.com/ru/users/"+login+"/wall",str,0,data,data,str);
//--- в случае успешной публикации вернем truereturn(res==200);
}
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//--- опубликуем пост на mql5.com c картинкой, путь к которой возьмем из параметра InpFileName
PostToNewsFeed(InpLogin,InpPassword,"Проверка расширенной версии функции WebRequest\r\n""(Данное сообщение размещено скриптом WebRequest.mq5)",InpFileName,InpFileType);
}
//+------------------------------------------------------------------+
В новом билде будет доступна расширенная версия функции WebRequest(). Вот пример авторизации на сайте mql5.com и послледующей публикации поста в ленте пользователя.
В новом билде будет доступна расширенная версия функции WebRequest(). Вот пример авторизации на сайте mql5.com и послледующей публикации поста в ленте пользователя.
В новом билде будет доступна расширенная версия функции WebRequest(). Вот пример авторизации на сайте mql5.com и послледующей публикации поста в ленте пользователя.
Подскажите пожалуйста выполняю но выдает ошибку
2016.04.19 14:25:03.683 webreq NZDUSD,M15: Ошибка, данные авторизации не найдены в ответе сервера (проверте логин/пароль)
в возвращаемой строке нет auth (((
Схема авторизации на сайте MQL5.com изменилась из соображений безопасности, и теперь авторизоваться из программы MQl5 нельзя
Спасибо, понятно.
Подскажите пожалуйста, есть другие возможности делать посты с рисунками автоматом?
Схема авторизации на сайте MQL5.com изменилась из соображений безопасности, и теперь авторизоваться из программы MQl5 нельзя
Как теперь можно авторизоваться из mql программы, для получения данных из своего профиля ?
Из MQL5 с помощью WebRequest авторизоваться на mql5.com нельзя никак.
Из MQL5 с помощью WebRequest авторизоваться на mql5.com нельзя никак.
Возможно ли автоматически как то получать отчет о продажах и скачиваниях продуктов из профиля ?
Для дальнейшего анализаВозможно ли автоматически как то получать отчет о продажах и скачиваниях продуктов из профиля ?
Для дальнейшего анализаЗапилить у себя на сервере.