|
Передача файла через веб-сервисы | ☑ | ||
---|---|---|---|---|
0
white_tiger
13.10.14
✎
15:04
|
Доброго времени суток!
Обращаюсь со следующим вопросом: как передать готовый хмл-файлик с данными через веб-сервис на мобильное приложение?он лежит,предположим,в папке,я его оттуда тащу и засовываю в хранилище значений, вот код веб-сервиса: Функция ReceiveMessage(SourceNode, ReceiverNode) Попытка ИмяФайла = "C:\Users\Администратор\AppData\Local\Temp\2\Message001_002.xml"; Хранилище = Новый ХранилищеЗначения(ИмяФайла); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Возврат Хранилище; КонецФункции тип возвращаемого значения valueStorage На стороне мобильной конфы пишу: Прокси = ПолучитьПрокси(); SourceNode = УзелИБ.Код; ReceiverNode = ТекУзел.Код; ФайлВебСервиса = Прокси.ReceiveMessage(SourceNode, ReceiverNode); ИмяХМЛСообщения = ФайлВебСервиса.Получить(); Все это добро вылетает с сообщением "Файл не обнаружен C:\Users\Администратор\AppData\Local\Temp\2\Message001_002.xml". хотя он там есть. подскажите,пожалуйста, что не так? p.s. основная база периодически сообщает "ошибка исключительной блокировки информационной базы. ошибка разделения прав доступа" и не хочет обновляться. раньше работало нормально, пользователи вроде на месте. с чего бы так? версия моб. платформы 8.3.5.63, основная база файловая УТП 2.0.5.4, стоит на платформе 8.3.5.1068 |
|||
1
mzelensky
13.10.14
✎
15:17
|
(0) Сперва помести файл в двоичные данные, а потом записывай в хранилище.
+ Ты все это пытаешься выполнить на сервере или клиенте ? |
|||
2
mzelensky
13.10.14
✎
15:18
|
(1) + Лучше не клади файл в этот путь:
C:\Users\Администратор\AppData\Local\Temp Попробуй (для теста) просто |
|||
3
mzelensky
13.10.14
✎
15:19
|
Блин.
(2) + Попробуй (для теста) просто в C:\Test\Message001_002.xml |
|||
4
mzelensky
13.10.14
✎
15:20
|
Вообще прикольно конечно послушать твои мысли по поводу вот этого
ИмяФайла = "C:\Users\Администратор\AppData\Local\Temp\2\Message001_002.xml"; Хранилище = Новый ХранилищеЗначения(ИмяФайла); Вот что система, по твоему, должна сделать? |
|||
5
white_tiger
14.10.14
✎
06:23
|
(1) функция в веб-сервисе, остальное на сервере
спасибо,сейчас попробую |
|||
6
white_tiger
14.10.14
✎
06:38
|
даже по отладке застревает на имени файла, не видит даже в "C:\TempFiles\Message001_002.xml". может,с правами глюк?
|
|||
7
sda553
14.10.14
✎
07:09
|
(0) Я ни фига не понял, что происходит?
Мобильное приложение, используя путь c:\usersчегототам пытается прочитать чего то там в своем мобильном приложении? Файл передают через веб сервис, использую предварительно его кодирование в base64 |
|||
8
white_tiger
14.10.14
✎
07:33
|
так вот и нужно передать файл ч/з веб-сервис, выходит,в модуле веб-сервиса я получаю файл(он уже готов,поэтому ищу по пути), потом на мобильном приложении обращаюсь к веб-сервису и цепляю оттуда файл.
получается, нужно просто его преобразовать в двоичные данные и необязательно потом тащить в хранилище? поясните этот момент,пожалуйста |
|||
9
Cube
14.10.14
✎
07:39
|
(8) У тебя что, два веб-сервиса участвуют в этой операции?
|
|||
10
white_tiger
14.10.14
✎
07:50
|
(9) пока 1
|
|||
11
Cube
14.10.14
✎
07:54
|
(10) У тебя база клиент-серверная или файловая?
Если клиент-серверная, то файл ищется по указанному тобой пути на сервере, а не на клиенте... |
|||
12
white_tiger
14.10.14
✎
07:58
|
(11)файловая
|
|||
13
white_tiger
14.10.14
✎
08:55
|
снова "ошибка исключительной блокировки информационной базы. ошибка разделения доступа к базе данных" ((
|
|||
14
Krolik Bezobraznik
14.10.14
✎
09:09
|
(0) Что подразумеваешь под моб приложением?
|
|||
15
Ranger_83
14.10.14
✎
09:15
|
отладчиком смотрел?
|
|||
16
white_tiger
14.10.14
✎
09:16
|
(14) нужно получить хмл-файл на моб.устройстве, там небольшая самописная конфа с планом обмена
|
|||
17
white_tiger
14.10.14
✎
09:16
|
(15) отладчик не заходит, все сразу же валилось,на имени файла
|
|||
18
arccos6pi
14.10.14
✎
09:23
|
я файлик передаю так
typeFile = ФабрикаXDTO.Тип("http://какое-то имяu", "File"); ТипДвоичныеДанные = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "base64Binary"); ТипСообщения = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"); текФайл = ФабрикаXDTO.Создать(typeFile); ИмяФайла = ПолучитьИмяВременногоФайла("mxl"); ................................ ДанныеФайла = Новый ДвоичныеДанные(ИмяФайла); текФайл.binaryData = ФабрикаXDTO.Создать(ТипДвоичныеДанные,ДанныеФайла); текФайл.message = "ok"; текФайл.ext = ФабрикаXDTO.Создать(ТипСообщения,"mxl"); Возврат текФайл; а возвращет метод вебсервиса строку и все прекрасно работает |
|||
19
white_tiger
14.10.14
✎
12:59
|
загнала код в попытку,ругается теперь на "extra content at the end of the document"
|
|||
20
Serginio1
14.10.14
✎
15:13
|
||||
21
Serginio1
14.10.14
✎
15:17
|
20+ передавай Двоичные данные
Или Метод должен возвращать base64Binary (http://www.w3.org/2001/XMLSchema) ддФайлЭксель = Новый ДвоичныеДанные(НаименованиеФайла); ТипДвоичныеДанные = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "base64Binary"); ДвоичныеДанные = ФабрикаXDTO.Создать(ТипДвоичныеДанные,ддФайлЭксель); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |