Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.03.2012, 21:54
bakanaev bakanaev вне форума
Прохожий
 
Регистрация: 27.03.2012
Сообщения: 3
Репутация: 10
По умолчанию Тупость idhttp.post (Прoблeмa. Есть рeшeниие?)

Здравствуйте. Возникла проблем. Делаю post запрос (IdHttp1.post)
Код:
 
page := IdHttp1.post('https://secure.site.org/site/API',data);
 
 if pos('!!!!!!!!!!!!!Тут то что мне надо!!!!!!!!!!!!!!!!',page )<>0 then
     begin
       Label1.Caption:='БЛА1';
     end
   else
    Label1.Caption:='БЛА2';
В ответ получаю "HTTP/1.1 403 Forbidden", НО!!!!
Ответ на мой post запрос (Смотрел в снифере)
Код HTML:
HTTP/1.1 403 Forbidden Date: Tue, 27 Mar 2012 01:52:21 GMT Server: Apache Cache-Control: private Set-Cookie: JServSessionIdr004=q1j2d0y1m4.app214a; path=/site/ Transfer-Encoding: chunked Content-Type: text/xml; charset=UTF-8 236 <?xml version="1.0" encoding="UTF-8"?> <Response xsi:schemaLocation="http://site.com/crm/v1.0 http://service.site.net/xmlschema/crm.public.v1.xsd" xmlns="http://convio.com/crm/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <errors> <code>101</code> <message>!!!!!!!!!!!!!Тут то что мне надо!!!!!!!!!!!!!!!(Обычный текст)</message> <reason>FIELD_VALIDATION</reason> <pageError>!!!!!!!!!!!!!Тут то что мне надо!!!!!!!!!!!!!!!(Обычный текст)</pageError> <fieldError>!!!!!!!!!!!!!Тут то что мне надо!!!!!!!!!!!!!!!(Обычный текст)</fieldError> </errors> </Response> 0

+Браузер получает 100% идентичный ответ (смотрел в снифере)

При вылете этого сообщения работа программы останавливается, естественно ни какого парсинга переменной page не происходит.
Прошу помощи в решении данной проблемы.
P.S В практическом программирование всего 4 дня)) Так что если будите что то описать, прошу делать это как можно подробнее )))
P.P.S Есть у кого нибудь кряк для Embarcadero® RAD Studio XE2 Version 16.0.4429.46931 ??
Ответить с цитированием
  #2  
Старый 27.03.2012, 22:28
ildvild ildvild вне форума
Прохожий
 
Регистрация: 12.10.2010
Адрес: Уфа
Сообщения: 31
Версия Delphi: 7, 2007, 2010
Репутация: 10
По умолчанию

Может из за того что ты делаешь запрос на защищенный сайт https, а idhttp с ним не работает, поробуй
подключить к нему TIdSSLIOHandlerSocketOpenSSL
Ответить с цитированием
  #3  
Старый 27.03.2012, 22:32
bakanaev bakanaev вне форума
Прохожий
 
Регистрация: 27.03.2012
Сообщения: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от ildvild
Может из за того что ты делаешь запрос на защищенный сайт https, а idhttp с ним не работает, поробуй
подключить к нему TIdSSLIOHandlerSocketOpenSSL
Все подключено)) Скажу даже больше, эта ошибка и должна вылетать, НО, как мне обойти это? Надо что бы ошибка не вылетала и страница записывалась в page
Ответить с цитированием
  #4  
Старый 28.03.2012, 20:32
ildvild ildvild вне форума
Прохожий
 
Регистрация: 12.10.2010
Адрес: Уфа
Сообщения: 31
Версия Delphi: 7, 2007, 2010
Репутация: 10
По умолчанию

тогда заключи код в блок try-except или отключи в свойствах проекта debuging--исключения не будут выводиться
Ответить с цитированием
  #5  
Старый 29.03.2012, 00:04
bakanaev bakanaev вне форума
Прохожий
 
Регистрация: 27.03.2012
Сообщения: 3
Репутация: 10
По умолчанию

Я уже очень близко !!!!!
Код:
Возвращенные заголовки (после ответа сервера) можно посмотреть так:

idHttp.Response.RawHeaders.GetText;
Вот так реализовал
Код:
try
 page := IdHttp1.post('https://secure.site.org/site/API',data);

Except
  on Exception do Memo1.Lines.Text:= idHttp1.Response.RawHeaders.GetText ;

end;
Программа вывела вот это
Код:
Date: Wed, 28 Mar 2012 19:35:03 GMT
Server: Apache
Cache-Control: private
Transfer-Encoding: chunked
Content-Type: text/xml; charset=UTF-8

Но этого не достаточно,нужно остльное остальное
Код:
TTP/1.1 403 Forbidden
Date: Wed, 28 Mar 2012 19:35:03 GMT
Server: Apache
Cache-Control: private
Transfer-Encoding: chunked
Content-Type: text/xml; charset=UTF-8

236
<?xml version="1.0" encoding="UTF-8"?>
<Response xsi:schemaLocation="http://site.com/crm/v1.0 http://service.site.net/xmlschema/crm.public.v1.xsd" xmlns="http://convio.com/crm/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <errors>
    <code>101</code>
    <message>!!!!!!!!!!!!!Тут то что мне надо!!!!!!!!!!!!!!!(Обычный текст)</message>
    <reason>FIELD_VALIDATION</reason>
    <pageError>!!!!!!!!!!!!!Тут то что мне надо!!!!!!!!!!!!!!!(Обычный текст)</pageError>
    <fieldError>!!!!!!!!!!!!!Тут то что мне надо!!!!!!!!!!!!!!!(Обычный текст)</fieldError>
  </errors>
</Response>
Как мне использовать idHttp.Response. что бы получить весь ответ ???? Дайте почитать что нибудь про idHttp.Response
Ответить с цитированием
  #6  
Старый 29.03.2012, 09:10
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

попробуй в Post передать еще AResponseContent: TStream и из него читать ответ. что-то типа:
Код:
var
  AStrings: TStrings;
  AStringStream: TStringStream;
begin
  AStrings:=TStringList.Create;
  AStringStream:=TStringStream.Create('');
...
  try
    IdHTTP1.Post('...', AStrings, AStringStream);
  finally
    ShowMessage(AStringStream.DataString);
  end;
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:32.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025