Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Обойти ограничение в 8000 символов  [new]
-SWAN-
Member

Откуда: Оделся, обулся - и на работу вернулся!)
Сообщений: 207
Здравствуйте!
Подскажите советом.
Как обойти ограничение на 'ResponseText' в 8000(varchar) (или как вариант в 4000 в nvarchar)?
Есть код, им я отправляю xml и должен по идее получить в ответ PDF-файл (проблема в том что размер возвращаемого файла около 50000 символов) и он странным образом обрезается (например до 84 символов)

declare @str varchar(8000)
set @str='xml_request=<?xml version="1.0" encoding="UTF-8" ?>
<OrdersPrint Date="2018-08-10" Account="z9GRRu7FxmO53CQ9cFfI6qiy32wpfTkd" Secure="w24JTCv4MnAcuRTx0oHjHLDtyt3I6IBq" OrderCount="1" CopyCount="1">
    <Order DispatchNumber="1105049242"/>
</OrdersPrint>'
         
DECLARE @url varchar(300)  
DECLARE @win int 
DECLARE @hr  int 
declare @test nvarchar (4000)

SET @url = 'https://integration.edu.cdek.ru/orders_print.php'

EXEC @hr=sp_OACreate 'MSXML2.ServerXMLHTTP',@win OUT 
EXEC @hr=sp_OAMethod @win, 'Open',null,'POST',@url,'false'
EXEC @hr=sp_OAMethod @win,'setRequestHeader',NULL, 'Content-type', 'application/x-www-form-urlencoded; charset=UTF-8'
EXEC @hr=sp_OAMethod @win,'Send',NULL,@str
EXEC @hr=sp_OAGetProperty @win,'ResponseText', @test output
select len(@test), @test
16 апр 19, 17:07    [21864060]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 2014
-SWAN-
declare @str varchar(8000)

Так ?
declare @str varchar(max)
16 апр 19, 17:17    [21864071]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
-SWAN-,

автор
application/x-www-form-urlencoded


должен по идее получить в ответ PDF-файл
автор
Content-type:application/pdf
16 апр 19, 17:19    [21864075]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
-SWAN-
Member

Откуда: Оделся, обулся - и на работу вернулся!)
Сообщений: 207
Valery_B, нет, проблема в

declare @test nvarchar (4000)

в неё выгружаются данные
16 апр 19, 17:20    [21864078]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
-SWAN-
Member

Откуда: Оделся, обулся - и на работу вернулся!)
Сообщений: 207
TaPaK
-SWAN-,

автор
application/x-www-form-urlencoded


должен по идее получить в ответ PDF-файл
автор
Content-type:application/pdf


нет, при таком варианте ошибка отправляемого XML (ругается)
<?xml version="1.0" encoding="UTF-8"?><response ErrorCode="ERR_XML_EMPTY" Msg="Значение переменной $_POST[xml_request] пустое" />
16 апр 19, 17:22    [21864083]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
-SWAN-
TaPaK
-SWAN-,

пропущено...


должен по идее получить в ответ PDF-файл
пропущено...


нет, при таком варианте ошибка отправляемого XML (ругается)
<?xml version="1.0" encoding="UTF-8"?><response ErrorCode="ERR_XML_EMPTY" Msg="Значение переменной $_POST[xml_request] пустое" />

Так заполняйте правильно Значение переменной $_POST[xml_request]
16 апр 19, 17:23    [21864087]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
-SWAN-
Member

Откуда: Оделся, обулся - и на работу вернулся!)
Сообщений: 207
Может быть есть какой-нибудь совсем другой подход? как получить файл (в моем случае PDF) из интернета?
16 апр 19, 17:24    [21864088]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
-SWAN-
Может быть есть какой-нибудь совсем другой подход? как получить файл (в моем случае PDF) из интернета?

Сотни способов без использования SQL сервера
16 апр 19, 17:27    [21864093]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
-SWAN-
Member

Откуда: Оделся, обулся - и на работу вернулся!)
Сообщений: 207
TaPaK
-SWAN-
Может быть есть какой-нибудь совсем другой подход? как получить файл (в моем случае PDF) из интернета?

Сотни способов без использования SQL сервера


мне хотя бы один примерчик, например в VBA (Access)
16 апр 19, 17:32    [21864099]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
-SWAN-
TaPaK
пропущено...

Сотни способов без использования SQL сервера


мне хотя бы один примерчик, например в VBA (Access)

google -> vba get file from internet
16 апр 19, 17:36    [21864114]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
invm
Member

Откуда: Москва
Сообщений: 9123
-SWAN-,

declare @t table (s nvarchar(max));
insert into @t
 EXEC @hr=sp_OAGetProperty @win,'ResponseText'

select len(s), s from @t
16 апр 19, 17:37    [21864117]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
-SWAN-
Member

Откуда: Оделся, обулся - и на работу вернулся!)
Сообщений: 207
invm
-SWAN-,

declare @t table (s nvarchar(max));
insert into @t
 EXEC @hr=sp_OAGetProperty @win,'ResponseText'

select len(s), s from @t


нет, увы, так тоже обрезает до 84-х символов. Спасибо.
16 апр 19, 17:52    [21864135]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
-SWAN-
Member

Откуда: Оделся, обулся - и на работу вернулся!)
Сообщений: 207
TaPaK
-SWAN-
пропущено...


мне хотя бы один примерчик, например в VBA (Access)

google -> vba get file from internet


Но у меня нет файла (нет ссылки на него)
Я могу его получить только в ответ на мой XML запрос.
16 апр 19, 17:53    [21864139]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
invm
Member

Откуда: Москва
Сообщений: 9123
-SWAN-
нет, увы, так тоже обрезает до 84-х символов.
Это был ответ на
-SWAN-
Как обойти ограничение на 'ResponseText' в 8000(varchar)
16 апр 19, 18:18    [21864171]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
aleks222
Member

Откуда:
Сообщений: 855
Я, наверное, опять банален... но!

PDF это binary.

Поэтому тредстартер сам себе злобный буратино.
16 апр 19, 19:49    [21864251]     Ответить | Цитировать Сообщить модератору
 Re: Обойти ограничение в 8000 символов  [new]
-SWAN-
Member

Откуда: Оделся, обулся - и на работу вернулся!)
Сообщений: 207
aleks222
Я, наверное, опять банален... но!

PDF это binary.

Поэтому тредстартер сам себе злобный буратино.


)))
Всем спасибо за советы!
Получилось сделать это в клиенте (Access VBA)
17 апр 19, 10:56    [21864596]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить