Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];

Вниз

Как создать правильный POST-запрос для E-port?   Найти похожие ветки 

 
Dmitriy   (2009-10-22 15:13) [0]

Здравствуйте!
Пишу ПО для связи с сервером E-port. А конкретнее, нужно правильно создать POST-запрос. Дело в том, что пустые запросы для получения справочника, лимита, и информационных сообщений, согласно описанию на сайте http://www.e-port.ru/dev/ по версии протакола 2, все работает, а вот уже запрос на проведение операции не работает. При отправке на https://dealer.e-port.ru/cp/fe выдает "HTTP/1.1 400 Bad Request".
Код вот какой:

data := TStringList.Create;
data.Clear;
data.Add("OPERATION");
data.Add("id=123456789");
data.Add("checkid=123456");
data.Add("product=4420");
data.Add("value=10.0000RUR");
data.Add("account=9130000000");

IdHTTP1.Request.ContentType := "text/plain; charset=Windows-1251";
IdHTTP1.Request.ContentLength := length(data.Text);
IdHTTP1.Request.CustomHeaders.Add("X-Eport-Auth: point=500000; card="231000-00000"; pin="*********"");
MainForm.MemInfo.Lines.Text := IdHTTP1.Post("https://dealer.e-port.ru/cp/fe", data);
Data.Free;

Может хоть кто-нибудь показать где у меня ошибка? Может кто-то сталкивался с такой проблемой?


 
Медвежонок Пятачок ©   (2009-10-22 15:39) [1]

во первых убери ручное упоминание о длине контента.
во вторых ответ на вопрос скорее всего лежит в прикладной области епорта и к пост-запросам не имеет никакого отношения.


 
Медвежонок Пятачок ©   (2009-10-22 15:41) [2]

еще можно погрешить на неуказанную версию инди. в одной из версий пост неправильно работал с данными из стринглиста


 
Dmitriy   (2009-10-22 15:54) [3]


> во первых убери ручное упоминание о длине контента

Что это значит?

> еще можно погрешить на неуказанную версию инди. в одной
> из версий пост неправильно работал с данными из стринглиста

Версия Indy 9. Которая вместе с Delphi 7.


 
Hint   (2009-10-22 15:57) [4]

Это значит убрать
IdHTTP1.Request.ContentLength := length(data.Text);


 
Медвежонок Пятачок ©   (2009-10-22 16:02) [5]

Версия Indy 9. Которая вместе с Delphi 7.

Этих "девятых" версий как грязи.
У тебя какая девятая?


 
sniknik ©   (2009-10-22 19:08) [6]

> При отправке на https://dealer.e-port.ru/cp/fe выдает "HTTP/1.1 400 Bad Request".
не помню, что но чтото у меня с ним было, почему на 10ку перешел...
чего не вспомню,  вот
http://delphimaster.net/view/4-1189799328/
> sniknik ©  (17.09.07 11:20)  [8]
уже тогда забыл...


 
sniknik ©   (2009-10-22 19:33) [7]

проверил на 10ке, то же самое  - HTTP/1.1 400 Bad Request
похоже реально "плохой запрос"

а что за данные (строку запроса)  нужно послать? т.к. то что ты там в стринглист набираешь перед посылкой преобразуется к виду -
"OPERATION&id=123456789&checkid=123456&product=4420&value=10.0000RUR&account=913 0000000"
по протоколу того сайта, так и надо? доку посмотри.


 
Dmitriy   (2009-10-23 07:38) [8]


> Это значит убратьIdHTTP1.Request.ContentLength := length(data.
> Text);

А что вместо этого предлагается подставить? Ведь в запросе для E-port, согласно документации самого E-port"а, это "обязательный заголовок содержит длину тела HTTP-сообщения".
Я попробовал указать  его таким образом:

IdHTTP1.Request.CustomHeaders.Add("Content-length: "+IntToStr(length(data.Text)));

и соответственно не задавать IdHTTP1.Request.ContentLength и у меня выдало у же другое сообщение: 413 "Request Entity Too Large".

И как быть?


> а что за данные (строку запроса)  нужно послать? т.к. то
> что ты там в стринглист набираешь перед посылкой преобразуется
> к виду - "OPERATION&id=123456789&checkid=123456&product=4420&value=10.
> 0000RUR&account=913 0000000"


Не знаю как у вас, но например у меня в data.text, длину которой я читаю, нет никаких символов &, а переносы как и положено обозначены #$D#$A или #13#10, как угодно. На сайте E-port, между прочим, так и должно быть. По крайней мере, такие примеры запросов там приводятся.


 
sniknik ©   (2009-10-23 07:58) [9]

> Не знаю как у вас, но например у меня в data.text
а при чем тут data.text? преобразование идет внутри компонента, перед посылкой, и самих посылаемых данных, а не их источника. вряд ли в 9-ку было по другому (есть причина зачем это делается).
если тебе говорят, что фотография испорчена ты же не понимаешь это так, что у тебя лицо засвечено...

> E-port, между прочим, так и должно быть.
должно быть с переносами или должно быть с &? ошибку то тебе о неверности запроса они возвращают... (не имхо), т.е. это не ошибка компонент/протокола http, и т.д. это неверно составлен пакет запроса.

> По крайней мере, такие примеры запросов там приводятся.
с примерами на дельфи? и с посылкой, с данными в stringлисте? ну тогда о чем разговор? обратись туда в поддержку скажи, что пример не рабочий... пусть исправят.


 
sniknik ©   (2009-10-23 08:06) [10]

p.s. а вообще что за манеры, блин, просил же пример посылаемых данных, объяснил почему, и в вместо того чтобы привести этот пример, начинаются "отмазки" типа "у меня все правильно"... как всегда в общем то, позиция ламера - "виновато все что угодно, но не мой код, мои не знания используемых компонент".
или не нужно самому документацию по твоей проблеме читать чтобы найти этот пример? нафиг, нафиг.


 
Медвежонок Пятачок ©   (2009-10-23 09:14) [11]

А что вместо этого предлагается подставить? Ведь в запросе для E-port, согласно документации самого E-port"а, это "обязательный заголовок содержит длину тела HTTP-сообщения".

Ничего не ставить.


 
Медвежонок Пятачок ©   (2009-10-23 09:24) [12]

Не знаю как у вас, но например у меня в data.text, длину которой я читаю, нет никаких символов &, а переносы как и положено обозначены #$D#$A или #13#10, как угодно.

На сайт епорта попадает не твой дата текст, а то, что сделал с ним класс tidhttp.

Ты или к советам прислушивайся, или мучай свою голову в одиночку.


 
Anatoly Podgoretsky ©   (2009-10-23 11:55) [13]

> Dmitriy  (23.10.2009 07:38:08)  [8]

А для HTTP переносы строк ничего не значат, они игнорируются.


 
Dmitriy   (2009-10-23 13:43) [14]

Решил проблему сам, всем спасибо, можно закрывать тему.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.007 c
2-1256189426
AndrewG
2009-10-22 09:30
2009.12.13
Hint


2-1256278721
Drowsy
2009-10-23 10:18
2009.12.13
Multiple rows in singleton select.


2-1256321201
Zzzz
2009-10-23 22:06
2009.12.13
открытие содерж. blob-поля во врем. файле


1-1228138881
Layner
2008-12-01 16:41
2009.12.13
Дата генерации exe в самом exe...


2-1256655721
Nutz
2009-10-27 18:02
2009.12.13
Сохранение в Unicode





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский