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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2012, 12:02   #1
WhiteForge
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 14
Сообщение Ответ от сервера IdHTTP

Народ прошу вашей помощи.

Значит посылаю get запрос к серверу, он отправляет мне ошибку 409 или 403
По-разному

Я получаю ответ в виде xml, как мне его прочитать ?

HTTP.Response.GetText не даёт мне xml, он даёт мне только инфу о сервере и т д

RawHeaders.GetText - тоже самое
RawHeaders.CommaText - тоже самое

Как мне получить XMl, снифером его видно, также длина Content Lenght через программу совпадает со снифером, значит ответ где-то лежит, как его взять

Вот это видит сниффер:
HTTP/1.1 409 Conflict
Content-Type: text/xml; charset=utf-8
Server: Jetty(6.1.x)
Content-Length: 160
Connection: keep-alive

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><error code="551" appid="122"><failure cause="FAILED" field="password" value="******"/></error>

Вот это я могу получить:
HTTP/1.1 409 Conflict
Content-Type: text/xml; charset=utf-8
Server: Jetty(6.1.x)
Content-Length: 160
Connection: keep-alive

Вот это мне нужно получить:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><error code="551" appid="122"><failure cause="FAILED" field="password" value="******"/></error>

Последний раз редактировалось WhiteForge; 18.10.2012 в 12:28.
WhiteForge вне форума Ответить с цитированием
Старый 18.10.2012, 12:45   #2
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

А что дает вот такое?
Код:
showmessage(idhttp1.get('ваш сайт'));
Delphi_ProGer вне форума Ответить с цитированием
Старый 18.10.2012, 13:03   #3
WhiteForge
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 14
По умолчанию

Ничего, сообщение не появляется
WhiteForge вне форума Ответить с цитированием
Старый 18.10.2012, 13:51   #4
WhiteForge
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 14
По умолчанию

Можно как-нибудь обрезать эти ошибки в .pas самого делфи

У меня XE3

Чтобы delphi не знал что это такое, или чтобы от думал что 403 - это 200 ОК и наконец дал мне занести в переменную результат
WhiteForge вне форума Ответить с цитированием
Старый 18.10.2012, 14:05   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

ContentStream is a TStream property that represents the stream used when TIdHTTP.ReadResult is used to read the response content for an HTTP Get or Post request. When specified, the size of ContentStream should match the ContentLength for the response. Otherwise, response content is read until the connection is closed. ContentStream may also be used to retrieve "chunked" response content when the transfer encoding for the response indicates that "chunked" retrieval is supported.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 18.10.2012, 14:50   #6
WhiteForge
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 14
По умолчанию

Все эти Memory и TStream - ложные пути, после запроса вылетает ошибка и в переменную ничего не заносится, как и ответ от сервера, он содержит всё до ошибки от сервера, т.е. тип контента и так далее, после ошибки приходит и ответ, который idhttp уже не считывает. Чтобы получить результат нужен 200 OK, это 100%, после такого ответа начинается обмен, и try except - здесь тоже ничего не решает и вообще к этому близко не относится. Однако в действительности длина контента отображается в программе правильно, что очень странно, а получить его нельзя - вот бред.
Мучаюсь 3 дня, и вот сейчас решил сделать для себя окончательный вывод и смириться с тем, что IdHTTP не принял финальный ответ и ни куда его не записал, т.к. Error н..хй всё перекрыл (прошу прощения устал)

Повторю вопрос:

Можно как-нибудь модифицировать сам компонент, чтобы любой ответ с сервера считался как 200 OK ?

Последний раз редактировалось WhiteForge; 18.10.2012 в 14:56.
WhiteForge вне форума Ответить с цитированием
Старый 19.10.2012, 07:56   #7
WhiteForge
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 14
По умолчанию

Проблему решил, тему close!
WhiteForge вне форума Ответить с цитированием
Старый 21.10.2012, 14:31   #8
mqso
Пользователь
 
Регистрация: 19.07.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от WhiteForge Посмотреть сообщение
Проблему решил, тему close!
а можно узнать как решили?
mqso вне форума Ответить с цитированием
Старый 22.10.2012, 10:48   #9
WhiteForge
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 14
Радость

Цитата:
Сообщение от mqso Посмотреть сообщение
а можно узнать как решили?
ApplicationEvents заюзал, всё встало как надо
WhiteForge вне форума Ответить с цитированием
Старый 24.10.2012, 10:38   #10
mqso
Пользователь
 
Регистрация: 19.07.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от WhiteForge Посмотреть сообщение
ApplicationEvents заюзал, всё встало как надо
а можно код. тоесть не вес код,просто отрывок.
mqso вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ускорить idhttp или как в некоторых случаях не получать ответ от сервера? Кольша Работа с сетью в Delphi 4 24.01.2012 21:50
Ответ от сервера ursa1992 Работа с сетью в Delphi 33 10.01.2012 04:00
поймать ответ от сервера miki131 Работа с сетью в Delphi 1 24.12.2009 20:24
Ответ от сервера. mustang007 Работа с сетью в Delphi 3 23.05.2009 10:33
TClientSocket ответ от сервера JRcoker Работа с сетью в Delphi 10 02.10.2008 01:55