Как отправить строку base64 или объект MemoryStream UTF-8 в Symantec Protection Engine (SPE) в AWSC#

Место общения программистов C#
Ответить
Anonymous
 Как отправить строку base64 или объект MemoryStream UTF-8 в Symantec Protection Engine (SPE) в AWS

Сообщение Anonymous »

Все примеры, которые я видел, показывают, что файлы отправляются в API-интерфейс SPE AWS Virus Scanner, но у меня есть строка base64, или мой код преобразовал эту строку в объект MemoryStream UTF-8. В ранее реализованной библиотеке Symantec dll не было проблем с отправкой этого MemoryStream через блоки по 512 байт.
В приведенном ниже коде переменная myMemoryStream была переменной fileStream в примере фрагмента кода.
При выполнении вызова и анализе результата возвращается ошибка: Неподдерживаемый тип носителя.
Может кто-нибудь помочь мне понять, что я делаю неправильно?
Фрагмент ссылки на код файла:

Код: Выделить всё

HttpResponseMessage response = new HttpResponseMessage();
Uri scanUrl = new Uri(hostUrl + "/api/Scan");
HttpClient client = new HttpClient();
using (var fileStream = fileToAdd.OpenReadStream())
{
var form = new MultipartFormDataContent();
var streamContent = new StreamContent(fileStream);
streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
form.Add(streamContent, "documents", fileToAdd.FileName);
form.Add(new StringContent("NONE"), "composite");

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
client.DefaultRequestHeaders.Add("Prefer", "respond-async");
response = await client.PostAsync(scanUrl, form);
Мой новый код:

Код: Выделить всё

//resumeFile is a string in base64
byte[] byteArray = Encoding.UTF8.GetBytes(resumeFile);
MemoryStream myMemoryStream = new MemoryStream(byteArray);
...
HttpResponseMessage response = new HttpResponseMessage();
Uri scanUrl = new Uri(hostUrl + "/api/Scan");
HttpClient client = new HttpClient();

var form = new MultipartFormDataContent();
var streamContent = new StreamContent(myMemoryStream);
streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
form.Add(streamContent, "documents", fileName);
form.Add(new StringContent("NONE"), "composite");

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
client.DefaultRequestHeaders.Add("Prefer", "respond-async");
response = await client.PostAsync(scanUrl, form);

dynamic parsed = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
Я попробовал изменить MediaTypeHeaderValue на text/plain.

Не удалось опросить содержимое «проанализированной» переменной, чтобы определить, может ли она расскажите мне больше о том, что не так с вызовом.

Я ожидал, что код, по крайней мере, даст мне лучшую обратную связь, чем «Неподдерживаемый тип носителя». Было бы неплохо, если бы он рассказал мне, что нашел.

Подробнее здесь: https://stackoverflow.com/questions/790 ... protection
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»