v7: WinHttpRequest ошибка при отправке запроса #717834


#0 by viacheslav
Платформа 27 однопользовательская (на скульной такая же проблема) Выполняется обращение к веб-сервису через объект WinHttpRequest.5.1, текст запроса около 950 000 символов, при вызове метода WinHttpRequest.Send платформа падает с дампом "прекращаена работа программы 1С:v7 ... widnows может провести поиск способа устранения бла бла бла" Подробные сведения об ошибке: Сигнатура проблемы:   Имя события проблемы:    APPCRASH   Версия приложения:    7.70.0.27   Отметка времени приложения:    4573fc91   Имя модуля с ошибкой:    MFC42.DLL   Версия модуля с ошибкой:    6.6.8064.0   Отметка времени модуля с ошибкой:    4d79b238   Дополнительные сведения 1:    ac1d   Дополнительные сведения 2:    ac1d4bd3f5ec62b81bb6dbdae31bbd47   Дополнительные сведения 3:    6bb6   Дополнительные сведения 4:    6bb616819e0b90ed10cb72a555a9b055 При меньших текстах запроса выполняется без ошибок. Опытным путем выявил пороговое значение длины запроса, при длине 511679 выполняется без ошибок, начиная с 511680 и выше - ошибка. Также отмечу, что на 1с8.2 с использованием того же объекта WinHttpRequest все выполняется без ошибок, видимо, дело в платформе 1с7 В чем причина, можно лечить, как?
#1 by viacheslav
up никто не сталкивался? =/
#2 by Дык ё
я сталкивался, можно обойти с использованием явы или дотнета. не знал, что в 8.2 работает :о
#3 by Torquader
Можно попробовать ServerXMLHttpRequest, который более "подвижен", а также можно сделать "прокладку" из сценария VbScript, чтобы в 1С уже заходили данные. Не забываем, что кодировки у объекта ив 1С разные (и двухбайтовые символы UTF-8 переводятся сначала в Unicode, а потом в Win1251). Через "прокладку" VbScript (MSScriptControl) можно "кушать" строку по частям.
#4 by zulu_mix
текст запроса в метр?? а побить на куски нельзя?
#5 by trad
сталкивался с этой бедой и даже немного дебажил (валится где то в конструкторе COleVariant когда семерка пытается подготовить свою длинную строку для передачи в COM объект) лечил так:
#6 by Torquader
Если через VbScript пробовать, то не повалится - проверялось и работало. Просто, для создания OLE-строки используется сначала преобразование Ansi->Unicode, а потом Unicode-строка копируется при помощи функции SysAllocString, чтобы её можно было "положить" в переменную Variant и отправить OLE-серверу. Если строку передавать "по частям" в VbScript, то там памяти много не потребуется.
#7 by viacheslav
через VbScript и MSScriptControl пробовал, текст запроса формирую и при вызове метода Run возникает та же ошибка. Возможно, делаю что-то не так7 В итоге сделал через сохранение скрипта в vbs-файл и далее его запуск через WshShell.Run. Только не знаю, как можно получить ответ от веб-сервиса в таком случае (сейчас это некритично, но в будущем может понадобиться). к сожалению, побить на куски нельзя. Работа сервиса так устроена, что на стороне сервера предыдущие переданные клиентом данные затираются новыми.
#8 by viacheslav
попробую вариант с OleExSup
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С