Я работаю над приложением C #, которое отправляет несколько небольших файлов на устройство с помощью данных многоэлементной формы. Мне не удалось заставить устройство фактически принимать данные, которые я отправляю, и у меня есть ощущение, что это связано с фактической кодировкой файла, так как он как-то передается, но я не совсем уверен , Он возвращает 200 / OK в качестве действительного POST, но не любит полезную нагрузку.
Я использую Chrome Dev Tools для максимально точного соответствия веб-интерфейса устройства. Одна вещь, которую я заметил, это то, что Dev Tools не показывает мне фактическую полезную нагрузку, а просто следующее, как будто она не может отобразить ее:
------WebKitFormBoundaryWwZOi6WAr7yb3yRE
Content-Disposition: form-data; name="[Redacted]"; filename="[AlsoRedacted]"
Content-Type: application/octet-stream
------WebKitFormBoundaryWwZOi6WAr7yb3yRE--
В качестве альтернативы, MessageBox, который я использовал для отладки, кажется, не имеет проблем с отображением.
Соответствующие части кода приведены ниже и будут признательны за любые предложения.
using (FileStream fs = new FileStream(Filename, FileMode.Open, FileAccess.Read))
{
using (MultipartFormDataContent Content = new MultipartFormDataContent(String.Format("----------{0:N}", Guid.NewGuid())))
{
StreamContent ContentStream = new StreamContent(fs);
Content.Add(ContentStream, "filename", System.IO.Path.GetFileName(Filename));
ContentStream.Headers.ContentDisposition.Name = "UploadEdid";
ContentStream.Headers.ContentDisposition.FileNameStar = null;
ContentStream.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
String ContentString = Content.ReadAsStringAsync().Result;
System.Windows.MessageBox.Show(ContentString, ContentString.Length.ToString());
using (HttpResponseMessage Response = await HttpClient.PostAsync(RequestUri, Content))
{
if (Response.IsSuccessStatusCode)
{
HttpLoggedIn = true;
string ResponseString = await Response.Content.ReadAsStringAsync();
ParseHttpResponse(ResponseString);
}
else
{
HttpLoggedIn = false;
}
}
}
}