Обсуждение статьи "Использование WinInet в MQL5. Часть 2: POST-запросы и файлы"

 

Опубликована статья Использование WinInet в MQL5. Часть 2: POST-запросы и файлы:

В данной статье мы продолжаем рассматривать принципы работы с Интернет посредством HTTP-запросов и обмен данными с сервером. Описаны новые функции класса CMqlNet, разобраны методы отправки данных из форм и передача файлов с помощью POST-запросов, а также вход на сайты под своим логином с помощью Cookie.

Автор: Alex Sergeev

 

Привет, Алекс,

Хорошая статья - у меня есть просьба по поводу 'части 3': XML-RPC взаимодействие с клиентом (и сервером, если возможно).

Будьте здоровы

 

При выполнении следующего оператора происходит сбой системы, как это можно решить?

hConnect=InternetConnectW(hSession, aHost, aPort, aUser, aPass, aService, 0, 0);

Error: Access violation read to 0x0000000000001F94 in '......ex5'

 

В строке 161 есть небольшая ошибка. Эта строка должна быть:

else StringToCharArray(req.stData, data, 0, StringLen(req.stData));

потому что терминал 0 копируется в массив, а HttpSendRequestW отправляет терминал 0 (как дополнительный символ) в последнее значение post var. Например, если ваши данные:

var1=value1&var2=value2

Вы получите на своей веб-странице var1, связанный со значением1, и var2, связанный со значением2\0.

Это отличная статья. Спасибо, что поделились ею.


С уважением,

 
После последнего обновления MT5 wininet не может быть использован, ir выдает ошибку нарушения доступа. Есть предложения по преодолению этой ошибки? Решения? Я безуспешно пытаюсь.
 
Ошибка нарушения доступа была решена, но POST-запросы теперь не работают. Видимо, данные в массиве uchar неправильно передаются в функцию dll.
 
mundoforex:

Ошибка нарушения доступа была решена, но POST-запросы теперь не работают. Видимо, данные в массиве uchar неправильно передаются в функцию dll.
Через некоторое время у меня все еще возникают ошибки нарушения доступа.
 
Почему никого не волнует эта проблема?
 
mundoforex:

Почему никого не волнует эта проблема?
Я с вами... Я отчаянно жду решения, но никто не отвечает. Я думал, что последнее обновление решит проблему, как сказали мне админы, но после обновления мне больше никто не ответил :(
 

У меня также возникла ошибка Access Violation с этим классом объектов. Проблема заключалась в использовании '0' в качестве NULL-указателя при вызове функции HttpOpenRequestW. Попробуйте заменить вызов

---   hRequest=HttpOpenRequestW(hConnect, req.stVerb, req.stObject, Vers, nill, 0, INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0); 

на другой вызов:

+++   hRequest=HttpOpenRequestW(hConnect, req.stVerb, req.stObject, Vers, NULL, NULL , INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0); 


Забавно, что неправильное использование NULL-указателя даже явно упоминается в документации MSDN как причина сбоя:

Failing to properly terminate the array with a NULL pointer will cause a crash.
HttpOpenRequest function (Windows)
  • msdn.microsoft.com
Creates an HTTP request handle. Syntax Parameters hConnect [in] lpszVerb [in] A pointer to a null-terminated string that contains the HTTP verb to use in the request. If this parameter is NULL, the function uses GET as the HTTP verb. lpszObjectName [in] A pointer to a null-terminated string that contains the name of the target object of the...
 

Пытаюсь взять из профиля отчет по продуктам и никак , что делаю не так ?