|
|
|
Передать XML POST запросом без изменения структуры.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Пытаюсь в Delphi 7 сделать модуль передачи сообщений в СМЭВ из своей БД. Собственно связь со СМЭВ осуществляется с помощью СМЭВ-коннектора на вход которому я должен подать XML POST запросом. В принципе задача, казалось бы несложная - тестовый клиент, idHTTP (у меня Indy 9.00.10), из XML файла набирается TStringList и методом POST отправляется. Но получаю Bad Request. Неверная структура запроса. Из браузера отправляю тот же XML - получаю нормальный ответ от СМЭВ коннектора. Поставил сниффер, выясняю, чем пакеты отличаются. Из браузера (часть запроса): Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Из моего клиента: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. То есть Tstrings передается как склеенные & строки. Это единственное отличие, которое я нашел. Похоже, СМЭВ коннектор не понимает такой формат запроса.. Новее версию компонентов для D7 я скачать не смог, поставил RAD Delphi 10.4.1. портировал клиента туда. Но в перехваченном пакете все точно так же склеено. И такая же ошибка... Может быть кто-то сталкивался с такой проблемой? Как передать структуру XML без изменений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2020, 10:44 |
|
||
|
Передать XML POST запросом без изменения структуры.
|
|||
|---|---|---|---|
|
#18+
какая у тебя СУБД ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2020, 10:51 |
|
||
|
Передать XML POST запросом без изменения структуры.
|
|||
|---|---|---|---|
|
#18+
sart74, Tstrings просто так амперсанды не вклеивает. Без кода трудно предположить что происходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2020, 11:00 |
|
||
|
Передать XML POST запросом без изменения структуры.
|
|||
|---|---|---|---|
|
#18+
СУБД у меня самописная, на delphi 7. Прием коммунальных платежей. На основе FireBird. Собственно, поэтому модуль на семерке и пишу, чтобы потом прикрутить к ней. Код примерно такой. (это уже после нескольких модификаций, пробую через поток сделать) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. В предыдущем варианте использовал вариант POST с TStrings, отправлял просто instr Instr.LoadFromFile(OD1.FileName); res:=Form1.IdHTTP1.Put(Trim(Conn.Text),inStr);[/SRC] но изменений никаких, та же ошибка. Настройки Request прописаны в свойствах компонента, собственно, там я правил только Accept = applicaton/xml ContentType = application/xml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2020, 11:18 |
|
||
|
Передать XML POST запросом без изменения структуры.
|
|||
|---|---|---|---|
|
#18+
Zelius sart74, Tstrings просто так амперсанды не вклеивает. Без кода трудно предположить что происходит Дело в том, что если я выгружаю Tstrings с загруженным XML в Memo, там амперсендов нет, получается, что они возникают на этапе отправки запроса. Это уже что-то в idHTTP происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2020, 11:23 |
|
||
|
Передать XML POST запросом без изменения структуры.
|
|||
|---|---|---|---|
|
#18+
sart74, отправляй тело как TStringStream, а не TStringList ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2020, 11:38 |
|
||
|
Передать XML POST запросом без изменения структуры.
|
|||
|---|---|---|---|
|
#18+
sart74, Я что-то такое помню, что в HTTP нельзя передавать пустые строки. Не уверен что это относится к Put, но всё-же проверьте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2020, 11:47 |
|
||
|
Передать XML POST запросом без изменения структуры.
|
|||
|---|---|---|---|
|
#18+
alekcvp, Насчет PUT это я ошибся, должно быть POST, конечно же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2020, 11:53 |
|
||
|
Передать XML POST запросом без изменения структуры.
|
|||
|---|---|---|---|
|
#18+
sart74, пройдись отладчиком, посмотри где идет замена CRLF (EncodeLineBreaks), выбери другой Post метод, в 10.6 есть с именем файла и инди сама оттуда загружает контент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2020, 12:16 |
|
||
|
Передать XML POST запросом без изменения структуры.
|
|||
|---|---|---|---|
|
#18+
asutp2 sart74, отправляй тело как TStringStream, а не TStringList Честно говоря, с потоками как-то не приходилось работать, TStringStream ни разу еще не использовал. Не совсем понял, как в него корректно загрузить XML. Но вот такой вариант, вроде бы, подошел: Код: pascal 1. 2. 3. 4. Мне вернулось HTTP/1.1 200 OK, в теле запроса все нормально. Правда, Response все-таки вернул ошибку, но это уже что-то по значениям в XML, буду разбираться с настройками коннектора. Огромное спасибо !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2020, 12:28 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40028288&tid=2037782]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 470ms |

| 0 / 0 |
