Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
Доброго дня! Коллеги, прошу совета. Есть легаси-проект на Delphi 7. В нем происходило обращение к веб-сервису и получение от него XML. В качестве реализации была выбрана компонента NativeXML и в ней код был простой: NativeXML.LoadFromURL(request); Все было хорошо, пока у веб-сервиса не появилась авторизация. Для NativeXML не нашел как ее добавить. Если делать через idHTTP (добавив у него задание логина и пароля), то при выполнении idHTTP.Get(request) для некоторых запросов получаю ошибку HTTP/1.1 400 Bad request При этом сами запросы правильные, NativeXML по ним получал данные без ошибок. Преобразование TIdURI.URLEncode к запросу применялось, спец символы тоже заменялись. Если такое же обращение выполнить в приложении с idHTTP, но собранном в Delphi XE3, то успешно выполняется. Есть предположение, что что-то не так с indy в 7-ой Дельфи. Но переставлять indy нежелательно, боюсь совсем старый проект поломать. Сейчас из идей: - вместо idHTTP использовать winsock и в нем GET выполнить, но пока не нашел примера как авторизацию в нем выполнить. - собрать на XE3 библиотеку DLL и ее вызывать для выполнения запроса и получения XML Может есть варианты лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2021, 10:23 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
SilverShield Может есть варианты лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2021, 10:57 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, сверил в wireshark, различие между пакетами в 15 байт. сам запрос одинаковый, но начало пакета до GET различается. В XE 3 на 15 байт длиннее. Это сам indy разных версий по разному срабатывает. Но не представляю как для D7 сделать также... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2021, 12:00 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
вернее наоборот, у D7 на 15 байт больше пакет - 785. У ХЕ3 - 770 байт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2021, 12:14 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
SilverShield, Вы не длину сравнивайте, а содержимое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2021, 13:00 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, начало пакета для D7: 0000 00 15 5d 05 64 00 1c 6f 65 48 3a 67 08 00 45 00 0010 03 03 50 6c 40 00 80 06 1c 03 c0 a8 05 02 c0 a8 0020 05 33 f0 7b 23 17 b7 f9 d4 8a 2b 83 3c 67 50 18 0030 01 00 1a 42 00 00 Это в текстовом виде: ]doeH:gEôVs@À¨À¨3ð~#¹¹ÈźaíP¿ Для ХЕ3: 0000 00 15 5d 05 64 00 1c 6f 65 48 3a 67 08 00 45 00 0010 02 f4 56 73 40 00 80 06 16 0b c0 a8 05 02 c0 a8 0020 05 33 f0 7e 23 17 b9 b9 c8 c5 81 ba 61 ed 50 18 0030 01 00 91 bf 00 00 Это в текстовом виде: ]doeH:gEPl@À¨À¨3ð{#·ùÔ+<gPB Дальше одинаково (GET и сам запрос). Но я абсолютно не представляю, что с этим дальше делать... В исходниках индевского сокета различие смотреть, как они Get обрабатывают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2021, 14:35 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
SilverShield начало пакета ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2021, 15:09 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
В том то и дело, что протокол http... и дальше сам пакет читаемый. ]doeH:gEPl@À¨À¨3ð{#·ùÔ+<gPBGET /serv/yadr/select?q=(+(id_keyn%3A%5B*+TO+*%5D+AND+((keys%3A1)+OR+(caption%3A1)))+)&rows=50&debugQuery=true&hl.simple.pre=%3Cem%3E&hl.highlightMultiTerm=false&indent=true&hl.simple.post=%3C%2Fem%3E&start=0&hl.fl=*&hl=true&hl.requireFieldMatch=false&wt=xml&hl.usePhraseHighlighter=true HTTP/1.1 Connection: keep-alive Content-Type: text/html Host: 192.168.1.21:8593 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding: gzip, deflate, sdch Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3 Authorization: Basic hFnRlmwqpenaY0KKa1VHallaNmm5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2021, 16:28 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
SilverShieldВ том то и дело, что протокол http... Нет, это явно не HTTP. В HTTP запрос начинается прямо с первого байта потока, а у тебя там какой-то мусор. Что и приводит к ошибке "Bad request". Отладчик в руки и разбирайся откуда это лезет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2021, 16:32 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
Если это запрос - то перед HTTP/1.1 должно быть названия метода и URI, а не этот бутор. Если это ответ сервера - то после HTTP/1.1 должен быть код результата, а его не видно (начального бутора тоже быть не должно, понятно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2021, 16:42 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
Согласен, однако в XE3 начинается также с мусора перед запросом: ]doeH:gEôVs@À¨À¨3ð~#¹¹ÈźaíP¿GET /serv/yadr/select?q=...(дальше текст аналогичен) но при этом сервер на него не ругается, а выдает результаты. Может это Wireshark лишнее добавил... Видимо надо под отладчиком в код indy лезть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2021, 17:00 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
SilverShield Может это Wireshark лишнее добавил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2021, 19:25 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
Может, это заголовки TCP/IP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2021, 10:30 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
зачем пользоваться WireShark, если ты не понимаешь, что в нем показывается? Поставь себе http(s) прокси, типа Fiddler4 и им подобным и смотри http-пакеты, без низкого уровня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2021, 03:15 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
SilverShield, этот "мусор" - данные аутентификации. Возможно, инди от Д7 не поддерживают (или реплизуют с ошибкой) уровень аутентификации, которую запросил сервер. Посмотри в отладчике, что хочет сервер и что выдает твой клиент на Д7 и на новых дельфях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2021, 08:46 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
Delphi7 прекрасно работают с Indy10 - попробуйте через них скачать файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2021, 10:10 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
ъъъъъэтот "мусор" - данные аутентификации. Какого протокола? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2021, 12:19 |
|
||
|
Получить XML в ответ на get запрос от веб-сервера с авторизацией на Delphi 7
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov ъъъъъэтот "мусор" - данные аутентификации. Какого протокола?Возможно, самописного. Но маловероятно - там похоже на куски кода из буффера обмена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2021, 13:30 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40080145&tid=2037220]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 259ms |

| 0 / 0 |
