Вопрос

Как обработать Multipart запрос в Creatio

Добрый день.

Что за зверь такой этот multipart?

Помогите правильно выставить веб сервис в Creatio и написать запрос в Постмане. Надо одним запросом передать описание объекта для его создания и файл. Все что нашел это https://academy.terrasoft.ua/docs/7-17/developer/integrations_and_api/d… но я понимаю что тут идет речь о создании запроса в среде Creatio.

Нравится

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

Александр, 

про multipart вот пара ссылок:

https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html

https://docs.microsoft.com/ru-ru/exchange/troubleshoot/administration/multipart-mixed-mime-message-format

Creatio просто поддерживает его

 

Про передачу в одном запросе. Вы можете использовать все, что предоставляет вам .net. Как простой пример - это метод по приему POST запроса с параметрами. Часть параметров - информация о файле, а один - сам файл (тип параметра Stream)

Спасибо, Артем.

Также пытаюсь выгрузить в одном запросе информацию о файле и сам файл, получил ошибку "500System.ServiceModel.ServiceActivationException"

Отдельно FileService/GetFile работает, а как получить изнутри файл и упаковать в один запрос с информацией о файле? Делаю по аналогии с внешним запросом, ответ преобразую в BLOB, из него получаю stream а дальше конвертирую в Base64.

var url = "http://localhost:82/0/rest/FileService/GetFile/2eebaeaa-5ebb-8942-0a65-0c5987ab8508/2eeca28b-3553-4195-adef-ae70c56e46ca";
				var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
				httpWebRequest.ContentType = "application/json";
				httpWebRequest.Method = "GET";
 
				using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
				{
					streamWriter.Flush();
					streamWriter.Close();
				}
 
				var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
				using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
				{
					string contents = streamReader.ReadToEnd();
                    byte[] byteArray = Encoding.UTF8.GetBytes(contents);
					MemoryStream stream = new MemoryStream(byteArray);
                    result = stream;					
				}

в запрос втавляю так

byte[] byteArray = Encoding.UTF8.GetBytes("");
MemoryStream newfilestream = new MemoryStream(byteArray);                    
GetFile(newfilestream);
takemessage.file = Convert.ToBase64String(newfilestream.ToArray());

 

А если по-сути, то при попытке прописать тип параметра Stream получил ошибку

The type or namespace name 'stream' could not be found (are you missing a using directive or an assembly reference?)

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