TIdHTTP::Get
выдает исключение EAccessViolation
при попытке отправить GET
запрос. На самом деле, мне нужно получить html-контент веб-страницы. Я решил использовать TIdHTML
+ Обработчики сокетов SSL (это потому, что мне нужен доступ к https).
Вот мой код:
int Foo::bar()
{
try
{
std::auto_ptr<TIdHTTP> idHttp(new TIdHTTP(NULL));
std::auto_ptr<TIdSSLIOHandlerSocketOpenSSL>
sslSock(new TIdSSLIOHandlerSocketOpenSSL(NULL));
idHttp->HandleRedirects = true;
idHttp->IOHandler = sslSock.get();
AnsiString reply;
// right there exception is being thrown
reply = idHttp->Get("https://www.yandex.com/");
ShowMessage(reply);
}
catch(EIdException & e)
{
ShowMessage(e.Message);
}
catch(Exception & e)
{
ShowMessage(e.Message);
}
}
На самом деле, есть одна вещь: мое приложение очень многопоточный. Все эти вещи выполнены в неосновным нить. Согласно этому сообщение, наверное, речь идет о IsMultiThread
переменная (но я уже установил его true
), поэтому я не знаю почему TIdHTTP
каждый раз пытается Read memory at 00000008
,
Задача ещё не решена.
Других решений пока нет …