Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2017, 15:38   #1
Xaker2650
 
Регистрация: 26.12.2011
Сообщений: 5
По умолчанию GET запрос на Delphi и получение ответа с сайта написанном на Python

Доброе время суток Гении!
В общем у меня такая проблема, надо получить ответ от сайта написанном на Python. Я пробовал уже и через компонент idHTTP и с использованием synapse через httpsend, THTTPSendEx всё бесполезна, запрос уходит ответа нету.

Пример последней моей попытки:
Код:
function send_get(url:string):String;
var
  zapros:THTTPSendEx;
  pos:string;
begin
zapros:=THTTPSendEx.Create;
//zapros.GZIPAllowed:=False;
zapros.GET(url, pos);
Result:=zapros.Headers.Text;
zapros.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.Text:=send_get('https://xxxxxxx/check.py');
end;
end.
Как видите по коменту думал используется на подобных сайтах GZIP, но не фига подобного реакции не какой, запрос уходит ответа нету.
Знатоки помогите разобраться, если надо будет сайт для примера напишу.
Xaker2650 вне форума Ответить с цитированием
Старый 08.07.2017, 16:03   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Надо смотреть, что сайт получает и возвращает при нормальной работе, и сравнивать с результатами программы. Может, каких-то заголовков нужно добавить
Black Fregat вне форума Ответить с цитированием
Старый 08.07.2017, 17:45   #3
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

https запрос возможно не работает, почитайте эту тему http://www.programmersforum.ru/showthread.php?t=301619 как правильно сделать https запрос и обновите dll файлы с этой ссылке, читайте с поста #5
еще поищите тему по поводу WinInet
Да и здесь на форуме много есть инфы как правильно сделать такой запрос

вот примерчик
Код:
uses 
httpsend, ssl_openssl .......;

procedure TForm1.Button1Click(Sender: TObject);
var
pList : TStringList;
httpsend: THTTPSend;
begin
 pList:= TStringList.Create;
 httpsend:=THTTPSend.Create;
 try
  httpsend.Protocol := '1.1';
  httpsend.UserAgent:=
  'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '+
  'Chrome/56.0.2924.87 Safari/537.36 OPR/43.0.2442.1144 (Edition Yx)';
    httpsend.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
    httpsend.Headers.Add('Accept-Language: en-US,en;q=0.5');
    httpsend.Sock.CreateWithSSL(TSSLOpenSSL);
    httpsend.Sock.SSLDoConnect;
    httpsend.HTTPMethod('get','https://xxxxxxx/check.py');
    pList.LoadFromStream(httpsend.Document);

    // для получения страницы
    memo1.Text:= UTF8ToAnsi(pList.Text);
 finally
 pList.free;
 httpsend.free;
end;
end;

Последний раз редактировалось Aliens_wolfs; 08.07.2017 в 23:17.
Aliens_wolfs вне форума Ответить с цитированием
Старый 08.07.2017, 20:00   #4
Xaker2650
 
Регистрация: 26.12.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Aliens_wolfs Посмотреть сообщение
https запрjс возможно не работает, почитайте эту тему http://www.programmersforum.ru/showthread.php?t=301619 как правильно сделать https запрос и обновите dll файлы с этой ссылке, читайте с поста #5
еще поищите тему по поводу WinInet
Да и здесь на форуме много есть инфы как правильно сделать такой запрос

вот примерчик
Код:
uses 
httpsend, ssl_openssl .......;

procedure TForm1.Button1Click(Sender: TObject);
var
pList : TStringList;
httpsend: THTTPSend;
begin
 pList:= TStringList.Create;
 httpsend:=THTTPSend.Create;
 try
  httpsend.Protocol := '1.1';
  httpsend.UserAgent:=
  'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '+
  'Chrome/56.0.2924.87 Safari/537.36 OPR/43.0.2442.1144 (Edition Yx)';
    httpsend.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
    httpsend.Headers.Add('Accept-Language: en-US,en;q=0.5');
    httpsend.Sock.CreateWithSSL(TSSLOpenSSL);
    httpsend.Sock.SSLDoConnect;
    httpsend.HTTPMethod('get','https://xxxxxxx/check.py');
    pList.LoadFromStream(httpsend.Document);

    // для получения страницы
    memo1.Text:= UTF8ToAnsi(pList.Text);
 finally
 pList.free;
 httpsend.free;
end;
end;
Ну Вы меня уж совсем за дибила держите либо за новичка... Соответственно я обновлял и подрубал либы ssl и я же писал выше, что писал подобно Вашему коду с использованием httpsend бесполезно.
А вот на счёт WinInet-а слышал можно получить ответ, но сперва надо получить куки на получение нужного мне ответа, но увы я бес понятия каким макаром мне их получить запрос та я дам, ответ как получу...
Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Надо смотреть, что сайт получает и возвращает при нормальной работе, и сравнивать с результатами программы. Может, каких-то заголовков нужно добавить
Сайт получает обычный GET запрос, а получить мы должны заголовок и GET запрос уходит, но обратно не чего не приходит...
Вот допустим пример сайта с которого я хочу получить ответ: https://cws.givex.com/cws/sircorp/consumer/main/home.py
Xaker2650 вне форума Ответить с цитированием
Старый 08.07.2017, 22:15   #5
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

http://www.programmersforum.ru/showp...51&postcount=4 вот здесь пример на WinInit.

Цитата:
подобно Вашему коду с использованием httpsend бесполезно.
Кстати тот код что я выше в посте #3 написал, я проверил работает же с вашей ссылкой, получает инфу

Последний раз редактировалось Aliens_wolfs; 08.07.2017 в 22:44.
Aliens_wolfs вне форума Ответить с цитированием
Старый 08.07.2017, 23:12   #6
Xaker2650
 
Регистрация: 26.12.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Aliens_wolfs Посмотреть сообщение
http://www.programmersforum.ru/showp...51&postcount=4 вот здесь пример на WinInit. С ваше ссылкой подумаем


Кстати тот код что выше в посте #3 написал, я проверил работает же с вашей ссылкой, получает инфу
Спасибо Братан! Всё заработало поставил либы версии 0.9.8.18, переписал твой код c использованием THTTPSendEx т.к мне с ним удобней работать и всё стало норм.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
pList : string;
httpsend: THTTPSendex;
begin

 httpsend:=THTTPSendex.Create;
 try
    httpsend.Sock.CreateWithSSL(TSSLOpenSSL);
    httpsend.Sock.CreateWithSSL(TSSLOpenSSL);
    httpsend.Sock.SSLDoConnect;
    httpsend.GET('https://cws.givex.com/cws/sircorp/consumer/main/home.py', pList);

    // для получения страницы
    memo1.Text:= httpsend.Headers.Text+pList;
 finally

 httpsend.free;
end;

end;

end.
Ещё раз спасибо от души!!!

Последний раз редактировалось Xaker2650; 08.07.2017 в 23:16.
Xaker2650 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение ответа сервера cyberdev Работа с сетью в Delphi 6 04.04.2016 15:57
Получение ответа от FTP-сервера Joose WPF, UWP, WinRT, XAML 4 23.11.2014 22:03
Получение ответа от компонента REST Cruzel C++ Builder 1 08.09.2014 20:38
Получение ответа сервера. Semreg Общие вопросы Delphi 1 01.12.2013 22:37
О получение ответа AJAX Rost93 JavaScript, Ajax 11 16.05.2012 07:25