7.5
OData
Технические вопросы
7.x

Как залить фото контакта через OData?

Добрый день, кто то может подсказать как залить фото контакта через OData, используя xml или json? Знаю что вопрос поднимался https://community.terrasoft.ru/forum/topic/10486, тему изучил, но так и не смог понять как реализовать подобное не на C#.
Отправляю POST запрос в SysImageCollection, передаю Name = имя_файла и Data = стрим_файла, в ответ получаю ошибку

При обработке этого запроса произошла ошибка.При обработке этого запроса произошла ошибка.System.Data.Services.DataServiceException at System.Data.Services.Serializers.ODataMessageReaderDeserializer.Deserialize(SegmentInfo segmentInfo)
 at System.Data.Services.Serializers.Deserializer.HandlePostRequest()
 at System.Data.Services.DataService`1.HandlePostOperation(RequestDescription description, IDataService dataService)
 at System.Data.Services.DataService`1.ProcessIncomingRequest(RequestDescription description, IDataService dataService)
 at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description)
 at System.Data.Services.DataService`1.HandleRequest()Invalid character in the given encoding. Line 6, position 15.System.Xml.XmlException at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
 at System.Xml.XmlTextReaderImpl.InvalidCharRecovery(Int32& bytesCount, Int32& charsCount)
at System.Xml.XmlTextReaderImpl.GetChars(Int32 maxCharsCount)
at System.Xml.XmlTextReaderImpl.ReadData()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at Microsoft.Data.OData.Atom.BufferingXmlReader.ReadInternal(Boolean ignoreInStreamErrors)
at Microsoft.Data.OData.Atom.BufferingXmlReader.ReadNextAndCheckForInStreamError()
at Microsoft.Data.OData.Atom.BufferingXmlReader.ReadInternal(Boolean ignoreInStreamErrors)
at Microsoft.Data.OData.Atom.BufferingXmlReader.Read()
at System.Xml.XmlReader.SkipSubtree()
at Microsoft.Data.OData.Atom.ODataAtomEntryAndFeedDeserializer.FindTypeName()
at Microsoft.Data.OData.Atom.ODataAtomReader.ReadEntryStart()
at Microsoft.Data.OData.Atom.ODataAtomReader.ReadAtStartImplementation()
at Microsoft.Data.OData.ODataReaderCore.ReadImplementation()
at Microsoft.Data.OData.ODataReaderCore.InterceptException[T](Func`1 action)
at System.Data.Services.Serializers.EntityDeserializer.ReadEntry(ODataReader odataReader, SegmentInfo topLevelSegmentInfo)
at System.Data.Services.Serializers.EntityDeserializer.Read(SegmentInfo segmentInfo)
at System.Data.Services.Serializers.ODataMessageReaderDeserializer.Deserialize(SegmentInfo segmentInfo)

Возможно какие то проблемы со стримом, но что именно там не так не могу понять, содержит следующие данные http://goo.gl/5jRcr6.
Поэтому буду признателен если у кого то есть пример реализации при помощи отправки json или xml данных

Нравится

2 комментария

Процесс создания файлов состоит из двух запросов. Первым делом создается запись в таблице файлов, без заполненной бинарной колонки. Второй запрос пересылает уже бинарные данные (PreviewData - это имя бинарной колонки)

POST http://mybpmonline:8082/7/ServiceModel/EntityDataService.svc/SysImageCo… HTTP/1.1
Connection: keep-alive
Content-Length: 91
MaxDataServiceVersion: 3.0
Content-Type: application/json;odata=verbose
ForceUseSession: true
Accept: application/json;odata=verbose
DataServiceVersion: 1.0
Accept-Encoding: gzip, deflate
Accept-Language: en-US
X-Requested-With: com.bpmonline.mobile70

{"Name":"640a7878-0637-4d09-b9de-5834fd559998","Id":"640a7878-0637-4d09-b9de-5834fd559998"}

PUT http://mybpmonline:8082/7/ServiceModel/EntityDataService.svc/SysImageCo… HTTP/1.1
Content-Type: multipart/form-data;boundary=+++++
MaxDataServiceVersion: 3.0
ForceUseSession: true
Accept: application/octet-stream,application/json;odata=verbose
Connection: close
Content-Length: 7199
Accept-Encoding: gzip

[ЗДЕСЬ В ТЕЛЕ ЗАПРОСА СОДЕРЖАТСЯ БИНАРНЫЕ ДАННЫЕ]

Спасибо большое, помогло

Показать все комментарии