|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Пытаюсь отправить запрос на веб сервис следующим способом Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Но при длинном responseBody (предполагаю больше 8000 байт), возвращается NULL. Хотя браузер возвращает все корректно и responseText тоже возвращает данные (но с крякозябрами вместо русских символов). При небольших ответах все возвращается корректно. В чем может быть проблема? Изначально использовал x nvarchar(max) и responseText, но там не устроило то что sql не умеет корректно отображать кириллицу, возвращаемую в utf-8. Поэтому решил возвращать массив байт и преобразовывать их через clr в utf-8. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2020, 22:22 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Чудное рядом. Получается, чтобы выполнить get-запрос, clr вы писать не хотите, а конвертеры всякие хотите. В общем, не будьте как мыши и не ешьте кактус, и не будете исколоты. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2020, 00:55 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452, Любую внешнюю по отношению к серверу нагрузку (особенно асинхронные вызовы) я бы советовал решать через использование очередей Service Broker + внешнее приложение. протестите что вообще возвращает объект ole-автоматизации, создайте аналог вашего вызова в скрипте powershell или VB ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2020, 01:56 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
felix_ff, У меня есть аналог на clr. Просто он, субъективно , работает медленнее. Менее гибкий к изменениям. А объекты ole возвращают то что у них просишь ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2020, 08:05 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Ну, это классическая ошибка начинающего - думать, что SQL server является сервером приложений или средой разработки прикладного ПО. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2020, 12:11 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Владислав Колосов, Так, если он позволяет решать поставленные задачи, то почему НЕТ? Потому что так не принято? Или есть более объективные причины? И причем здесь сервер приложений, если нужно просто сделать за прос к конечной точке и получить ответ в json? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2020, 17:32 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452, процедуры sp_oa и xp_cmdshell являются потенциально опасными компонентами. во-первых для их запуска требуются широкие права доступа (не каждому хочется давать sysadmin на сервер) во-вторых через эти компоненты можно запускать скрипты которые могут нарушить нормальную работу сервера. ну и в третьих вы сами видите некоторые артефакты их работы. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2020, 17:41 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452, сервер приложений потому, что выполняется программа, т.е. приложение. Они никак не связана в функцией сервера баз данных. Просто есть возможность, за которую Вы ухватились. На сервере с двумя десятками процедур и единственным администратором проблем не будет. Проблемы возникнут при разработке производственной базы. Внезапно окажется, что недостаточно прав или что-то не установлено или политика безопасности запрещает OLE автоматизацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2020, 17:57 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Так, если я взялся за это, то наверно эти моменты были учтены. И права sa не обязательны, всегда есть роли приложений и execute as. Так что не все так однозначно при продуманном подходе ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2020, 20:05 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452 Так, если я взялся за это, то наверно эти моменты были учтены. И права sa не обязательны, всегда есть роли приложений и execute as. Так что не все так однозначно при продуманном подходе ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2020, 20:45 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, Когда используешь новый для себя инструмент, заранее не знаешь о подводных камнях. И когда пишешь вопрос на форуме, то ожидаешь помощи по нему, а не флуда, типа зачем тебе это надо. По мне так если нечего ответить на заданный вопрос, то и комментарии оставлять не за чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2020, 21:49 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452 И когда пишешь вопрос на форуме, то ожидаешь помощи по нему, а не флуда, типа зачем тебе это надо. lex452 По мне так если нечего ответить на заданный вопрос, то и комментарии оставлять не за чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2020, 23:42 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452, Попробуйте сделать com-объект, который будет инкапсулировать запрос к внешнему ресурсу и разобраться какой ответ сервис возвращает. Еще есть инструменты типа fiddler’a чтобы понять что происходит(запрос/ответ) в результате запроса к внешнему ресурсу. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 00:05 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452 Гавриленко Сергей Алексеевич, Когда используешь новый для себя инструмент, заранее не знаешь о подводных камнях. И когда пишешь вопрос на форуме, то ожидаешь помощи по нему, а не флуда, типа зачем тебе это надо. По мне так если нечего ответить на заданный вопрос, то и комментарии оставлять не за чем. lex452, я не в коем образе не хочу сказать что вариант использования sp_oa не имеет место жизни, но Вам дают совет как обычно решаются задачи которые вы стараетесь решать через инструмент не сильно для этого предназначенный. Ваше право реализовать требуюмую задачу всеми подручными средствами, но просто прислушайтесь к совету что такие задачи обычно решаются несколько иными инструментами. что будет тогда когда изменится ответ от веб-сервиса? что будет тогда когда веб-сервис станет недоступен? что будет тогда когда в веб-сервис будет передан неверный запрос? и.т.д. - вы получите в лучшем случае ошибку пустой результат без описания конкретной ошибки, в худшем вы будете ожидать ресурса никак не связанного с процессом сервера, которые не будет завершен в ожидаемое время. знаю программиста который писал прикладное ПО на статических полях онли и оно работало в продакшене, но этот факт не превращает говнокод в конфету. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 00:09 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452, а как вы планируете это решение тестами покрывать? Первый вопрос, что мне всегда задаёт QA Lead ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 08:23 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
skyANA, Тс похоже сам понял что не в правильном направлении движется. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 10:10 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
В целях безопасности обычно закрывают HTTP с сервера БД, кроме всего прочего. Кроме того, при наличии реплики доступности на открывать дополнительные доступы с реплики. Недостатков такого решения достаточно много. Например, сложность отладки и написания автотестов. Применимость для промышленных решений сильно ограничена. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 12:33 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
А последующие вопросы будут от ребят, что отвечают за эксплуатацию на проде: где мониторинг, где хелсчеки? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 13:36 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
skyANA, не у всех есть такие требования. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:01 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
felix_ff что будет тогда когда изменится ответ от веб-сервиса? Ничего не будет, вернется другой ответ felix_ff что будет тогда когда веб-сервис станет недоступен? Вернется ошибка 500 felix_ff что будет тогда когда в веб-сервис будет передан неверный запрос? Вернется ошибка что неправильный запрос felix_ff и.т.д. - вы получите в лучшем случае ошибку пустой результат без описания конкретной ошибки, в худшем вы будете ожидать ресурса никак не связанного с процессом сервера, которые не будет завершен в ожидаемое время. Вообще-то там есть описание ошибок и настройка таймаута, вообще не понимаю к чему вы это написали. И я не пишу веб сервер, я пишу хранимку котороая может отправлять запросы по http ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:05 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Владислав Колосов, Существуют закрытые системы, и если нет явных требований к безопасности и тестированию то для чего мне все это? ПОтому что так принято и все? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:08 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
И раз все так решили поумничать и всего пару человек написали по теме. То предложите как решить задачу, когда существует стороннее ПО, которое умеет вызывать только стандартизованные хранимые процедуры и получать в ответ табличный набор данных, и вот стоит задача, через это ПО получить данные с WEB сервиса. Какое решение можете предложить кроме как обращаться к сервису через transact? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:12 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452 И раз все так решили поумничать и всего пару человек написали по теме. То предложите как решить задачу, когда существует стороннее ПО, которое умеет вызывать только стандартизованные хранимые процедуры и получать в ответ табличный набор данных, и вот стоит задача, через это ПО получить данные с WEB сервиса. Какое решение можете предложить кроме как обращаться к сервису через transact? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:17 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, И как же положить запрос к web сервису у которого есть только rest api для взаимодействия. И как ПО должно потом узнать что запрос обработан? Есть простое взаимодействие, вызвал хранимку и либо получил данные либо ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:20 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452 Гавриленко Сергей Алексеевич, И как же положить запрос к web сервису у которого есть только rest api для взаимодействия. И как ПО должно потом узнать что запрос обработан? Есть простое взаимодействие, вызвал хранимку и либо получил данные либо ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:22 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, Вот я и создал топик, чтобы сделать как желаю, и попросил помощи по исправлению ошибки, но вместо помощи получил кучу зачем и почему ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:24 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452 Гавриленко Сергей Алексеевич, Вот я и создал топик, чтобы сделать как желаю, и попросил помощи по исправлению ошибки, но вместо помощи получил кучу зачем и почему ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:25 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452, попробуй так Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:29 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, ТО есть для простой задачи, отправить http запрос на сервис через хранимку, вы предлагаете разработать целую инфраструктуру с табличками очередей запросов, написать отдельную прослойку, которая будет разгребать эту очередь и отправлять уже запросы на сервис а ответы класть еще в одну табличку, и изначально хранимка должна периодически проверять обработался ли ее запрос. Очень интересное предложение ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:30 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
court, Спасибо, попробую) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:30 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452 Гавриленко Сергей Алексеевич, ТО есть для простой задачи, отправить http запрос на сервис через хранимку, вы предлагаете разработать целую инфраструктуру с табличками очередей запросов, написать отдельную прослойку, которая будет разгребать эту очередь и отправлять уже запросы на сервис а ответы класть еще в одну табличку, и изначально хранимка должна периодически проверять обработался ли ее запрос. Очень интересное предложение ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:36 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, И зачем так усложнять такую задачу? И когда будет одновременно 1000 запросов, таблица sql server загнется от блокировок, потому что у нее будут либо постоянные delete либо update и много другого геморой. Нет уж спасибо за совет. Clr из 15 строчек кода меня больше устроит. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:40 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452 Гавриленко Сергей Алексеевич, И зачем так усложнять такую задачу? И когда будет одновременно 1000 запросов, таблица sql server загнется от блокировок, потому что у нее будут либо постоянные delete либо update и много другого геморой. Нет уж спасибо за совет. Clr из 15 строчек кода меня больше устроит. И да, для таблицы-очереди команды update и delete не нужны от слова "совсем". ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 15:48 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, Значит предлагаете использовать broker. Или кафку развернуть? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 17:53 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452 Гавриленко Сергей Алексеевич, Значит предлагаете использовать broker. Или кафку развернуть? А про очереди -- до определенного предела они отлично делаются на обычных таблицах. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 22:08 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
[quot Гавриленко Сергей Алексеевич#22165846] lex452 А про очереди -- до определенного предела они отлично делаются на обычных таблицах. можно подробнее, а то я не знаю способа без insert, delete, select top 1 и без блокировок и чтобы одновременно несколько консьюмеров получили разные строки ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 22:11 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452 Гавриленко Сергей Алексеевич, И зачем так усложнять такую задачу? И когда будет одновременно 1000 запросов, таблица sql server загнется от блокировок, потому что у нее будут либо постоянные delete либо update и много другого геморой. Нет уж спасибо за совет. Clr из 15 строчек кода меня больше устроит. У Вас на каждый вызов хп должен выполняться вызов rest-сервиса? Имхо такие вещи необходимо разруливать через асинхронщину. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 22:33 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
L.Otujktd, WinHttp.WinHttpRequest.5.1 поддерживает асинхронный режим ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 22:35 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452 можно подробнее, а то я не знаю способа без insert, delete, select top 1 и без блокировок и чтобы одновременно несколько консьюмеров получили разные строки Случай с множественными консьюмерами -- как раз не простой, но и тут есть варианты, если очень охота, а кафку поднимать негде. Данные для разных консьюмеров изолируются либо через отельные партиции, либо через таблицы. В случае с отдельными таблицами придется городить огород, чтобы их как-то равномерно наполнять, но их можно секционировать по дате / диапазонам id и обработанные партиции транкейтить. В случае с одной таблицей придется как-то решать вопрос с очисткой обработанных данных, но и тут есть варианты, например, можно нарезать новые таблицы, а по факту полной обработки удалять старые. Консьюмер, соответственно, сидит на своей партиции/таблице и последовательно ее обрабатывает, отмечая где-то последний обработанный ключ, оффсет -- как назовете. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 22:41 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, Да это был своего мини тролинг. я знаю что нормального решения с таблицами нету, и все это будет костыль костыльный. Вот только не пойму зачем вы мне все эти городушки предлагаете. Вы вроде человек очень опытный и врядли сами бы пошли таким путем. Но все равно будете продолжать гнуть свою линию. Про все это я и говорил, когда употребил слово инфраструктура. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 22:51 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
lex452, Что ж, было приятно пообщаться. Прощайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 23:19 |
|
Http request не возвращает responseBody
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, И вам пока ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 23:20 |
|
|
start [/forum/topic.php?all=1&fid=46&tid=1685841]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
others: | 276ms |
total: | 445ms |
0 / 0 |