![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 04.02.2010
Сообщений: 10
|
![]()
Добрый день, товарищи программеры. У меня следующая проблема:
На Delphi 7 с проапгрейженной Indy до 10.2.3 пытаюсь отправить запрос серверу по idHTTP (хочу сэмулировать запрос из флеш-приложения). С заголовком разобрался, авторизация проходит. Однако дебаггер (softxhttp) кажет мне что тело запроса не такое, как я вставляю в соответствующую переменную: почему то съедаются первые 3 байта тела запроса (их hex - 09 01 09) до букв. Код такой: (кстати, я новичёк в Дельфях, так что плиз не сильно критикуйте ![]() procedure TForm1.Button1Click(Sender: TObject); var Data:TStringList; Response: TStringStream; F:file of byte; bb:byte; req,tmp:string; pos:word; Begin req:=''; assignfile(f,'req_obraz.txt'); reset(f); // читаю из файла эталонный запрос, for pos:=1 to filesize(f) do begin // сохраненный дебаггером read(f,bb); req:=req+char(bb); end; Data:=TStringList.Create; Data.Clear; Response := TStringStream.Create(''); idHTTP1:=TIdHTTP.Create(nil); idHttp1.Request.Accept:='*/*'; idHttp1.Request.AcceptLanguage:='ru-RU'; idHttp1.Request.Connection:='Keep-Alive'; idHttp1.Request.CacheControl:='no-cache'; idHttp1.Request.ContentType:='appli cation/x-www-form-urlencoded'; // ....... // и так далее - задаю параметры заголовка - в дебаггрере они отображаются почти как нужно ![]() idHTTP1.AllowCookies:=true; Data.add(req); Data.SaveToFile('req_Data_saved.txt '); // убеждаюсь что запрос вписался как надо, только стал на 2 байта больше ![]() IdHTTP1.post('http://[путь такой же как у эталона в дебаггере]',Data,response); DBMemo1.Text:=utf8toansi(response.d atastring); end; Итак, сравнивая в дебаге текст того что я отправляю с эталоном запроса, вижу что он обреза на 3 байта спереди и на один в конце. Ессно сервер ругается ошибкой... Крутил-вертел параметры в заголовке - но никак не могу добиться точной отправки нужной мне последовательности байт. Складывается впечатление что idHTTP както отфильтровывает определенные байты. Есть ли альтернативный формат ввода данных, а не через стринг ? В чем может быть косяк? Помогите плиз - второй день парюсь.... ![]() П.С. есть конечно подозрения в несоответствии версий http, ибо флешка отсылает в 1.1, а прога, как я её не крутил (даже инди для этого обновлял) - в 1.0, но не уверен... Последний раз редактировалось IvanBegin; 04.02.2010 в 20:59. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 04.02.2010
Сообщений: 10
|
![]()
Спасибо всем за помощь и полезные советы.
Разобрался сам - все сделал через WinInet, чего всем и желаю! ![]() |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 29.09.2009
Сообщений: 228
|
![]()
А что ты ждал? Как задал вопрос так и получил ответ
![]() |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 04.02.2010
Сообщений: 10
|
![]()
Вобщето была надежда на людей, столкнувшихся с подобной проблемой. Ну или способных порекомендовать что-нть альтернативное, как вариант - wininet. Но я рад что до всего допер сам.
А что до того как задан вопрос - там все разжевано до предела. и дело не в скрипте на сервере - он то все принимает правильно, а как раз в idHTTP, который именно ест байты, а не то, на что нагло переименовали мою тему. ![]() Как проверить ?! да лехко - кидаем одну кнопку и мему на форму, копируем процедуру. берем любой сервер с php и перехватываем запрос на него, сохряняем тело запроса в файл req_obraz.txt, запускаем прогу и сравиниваем в том же дебаггере что летит из проги с тем что должно быть. Если для вас это сложно, то извините ![]() Ну а уж раз ваши гуру так сильно заняты своими проектами - зачем они вообще тут сидят? Надеюсь вы себя к оным не причисляете ? ![]() Последний раз редактировалось IvanBegin; 08.02.2010 в 09:43. |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 29.09.2009
Сообщений: 228
|
![]()
У меня сборка инди тоже 10.2.3 и никаких проблем ни с какими запросами небыло если правильно формировать запрос. Поэтому и говорил об нормальном примере чтоб можно было проверить у себя. Я очень часто наталкивался что разные сборки инди совсем по разному работают.
Последний раз редактировалось Usov; 08.02.2010 в 16:08. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Пропадают компоненты! | postal2 | Компоненты Delphi | 4 | 26.11.2009 15:42 |
[Idhttp] Приостановка get-запроса | EaRLL | Работа с сетью в Delphi | 3 | 27.09.2009 18:43 |
Отправка запроса на AMFPHP гейт через idHTTP | ZaRDaK | Работа с сетью в Delphi | 8 | 04.09.2009 20:03 |
Как в ProgressBar отобразить процесс выполнения Post запроса через Idhttp | Joe_Tribbiani | Работа с сетью в Delphi | 8 | 15.06.2009 10:39 |
Пропадают кнопки из ListBox | Alter | Компоненты Delphi | 4 | 16.02.2008 17:27 |