Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.02.2018
Сообщений: 1
1

Запрос GET idHTTP завершается c ошибкой

02.04.2018, 03:21. Просмотров 1166. Ответов 2
Метки нет (Все метки)

Здравствуйте!
Делаю программный доступ к интернет-ресурсу в С++ Builder 2009 c использованием компонента idHTTP.
Сначала пробовал чтение главной страницы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 TMemoryStream *stream;
 AnsiString ss, url;
 
 stream=new TMemoryStream();
 Form2->idHTTP1->IOHandler=Form2->idSSLIOHandlerSocketOpenSSL1;
 
 Form2->idHTTP1->Request->UserAgent="Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20100101 Firefox/16.0";
 Form2->idHTTP1->Request->Accept="text/html, application/xhtml+xml, application/xml; q=0.9,*/*; q=0.8";
 Form2->idHTTP1->Request->ContentType="application/json";
 Form2->idHTTP1->Request->Connection="Keep-Alive";
 Form2->idHTTP1->ConnectTimeout=6000;
 Form2->idHTTP1->ReadTimeout=70000;
 
 url="https://www.binance.com";
 Form2->idHTTP1->Get(url, stream);
 ss=Form2->idHTTP1->Response->ResponseText; // "HTTP/1.1 200 OK"
 
 Form2->idHTTP1->Disconnect();
 
 stream->SaveToFile(FILE_NAME);
 delete stream;
Всё работало. Начальный (без таблиц) вариант страницы читался.
Но через несколько дней при выполнении Get стала выходить ошибка:

"Error connecting with SLL
error: 14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
."

Выходит она и по сей день. Попытки решить проблему изменением настроек не дали результата.

Потом стал пробовать доступ через имеющийся там Public API, не требующий авторизации
(использовались другие url, например: url="https://api.binance.com/api/v1/ping";,
или url="https://api.binance.com/api/v1/ticker/24hr"; ).
Всё работало. Всё читалось без ошибок. Точно могу сказать что 16.03.2018 это чтение работало (сохранился файл).
Но через несколько дней - те же грабли!
"Error connecting ... SSL3_READ_BYTES:sslv3 alert handshake failure".

Частота проявления этой ошибки у меня - 100% случаев. То есть чтение невозможно.
Что это - "происки" админов сайта, которые что-то подкрутили в настройках доступа и сделали его невозможным в определённых случаях (не знаю как другими компонентами/средствами, но эти url легко открываются любым браузером)?
Может есть вариант как-то решить проблему?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2018, 03:21
Ответы с готовыми решениями:

IdHTTP Русский запрос!
Всем доброго времени суток! Как быть если в запросе символы кириллицы? Отправляю сообщение на...

IdHttp и запрос методом get выдает ошибку bad request
нужно отправить запрос на сайт смс рассылки (sms.ru) делаю следующий присваиваю значения idhttp: ...

IdHTTP POST запрос. Как получить содержимое ответа переданное в окно?
Посылаю post на авторизацию, возвращается заглавная страница с подтверждением. Все ок. Далее...

GET запрос на сайт (https) завершается с ошибкой "запрещено"
Всем привет! Я бы хотел написать простенькую утилиту для проверки баланса моего аккаунта (интернет...

2
+1
333 / 166 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
02.04.2018, 14:51 2
Цитата Сообщение от mk_cyber Посмотреть сообщение
"происки" админов сайта
Вот и спроси у них, в чем проблема?
0
0 / 0 / 1
Регистрация: 28.12.2015
Сообщений: 1
22.04.2018, 18:27 3
С++ Builder 10.2
Изменил у себя idHTTP1 на IdHTTP1 (возможно из-за версии), добавил переменную для имени файла, все работает без ошибок, файл сохраняется, так что проверяй свойства объектов IdSSLIOHandlerSocketOpenSSL1 и IdHTTP1

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TMemoryStream *stream;
AnsiString ss, url;
String name(time(NULL));
 
stream=new TMemoryStream();
IdHTTP1->IOHandler=IdSSLIOHandlerSocketOpenSSL1;
IdHTTP1->Request->UserAgent="Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20100101 Firefox/16.0";
IdHTTP1->Request->Accept="text/html, application/xhtml+xml, application/xml; q=0.9,*/*; q=0.8";
IdHTTP1->Request->ContentType="application/json";
IdHTTP1->Request->Connection="Keep-Alive";
IdHTTP1->ConnectTimeout=6000;
IdHTTP1->ReadTimeout=70000;
 
 url="https://www.binance.com";
IdHTTP1->Get(url, stream);
 ss=IdHTTP1->Response->ResponseText; // "HTTP/1.1 200 OK"
 
IdHTTP1->Disconnect();
 
 stream->SaveToFile(name+".txt");
 delete stream;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2018, 18:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

GetMailslotInfo завершается с ошибкой
Здравствуйте! Продолжаю осваивать работу с почтовыми ящиками в Windows. Не знаю, может быть стоило...

Выборка из БД по ID завершается с ошибкой
Появилась след проблема: есть таблица в БД назовем ее USER, в неи первичный ключ - CODE(varchar)....

Программа завершается с ошибкой Killed
Программа завершается с ошибкой Killed, когда я выделяю очень много динамической памяти, но меньше...

Запуск джоба завершается с ошибкой
Всем привет! Сегодня столкнулся с ситуёвиной - при инициализации пакета выполняется запрос,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.