后台上传器中的异常
本文关键字:异常 后台 | 更新日期: 2023-09-27 18:35:52
我正在尝试将一些avi文件上传到服务器。它适用于 HttpRequest,但即使我暂停应用程序,我也需要继续上传,这就是我尝试使用后台上传器的原因。我在 msdn http://msdn.microsoft.com/en-us/library/windows/apps/jj152727.aspx 上遵循此准则。所以我的代码看起来像这样。
StorageFile storageFile = KnownFolders.VideosLibrary.GetFileAsync("fileName");
BackgroundUploader uploader = new BackgroundUploader();
uploader.Method = "POST";
uploader.SetRequestHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
var fs = await storageFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);
IInputStream aaaa = fs.GetInputStreamAt(0);
UploadOperation upload = uploader.CreateUploadFromStreamAsync(new Uri("uploadUri"), aaaa);
await HandleUploadAsync(upload, true);
其余的与MSDN上的相同。我收到异常 方法句柄上传在线异步中不支持的媒体类型 (415)
await upload.StartAsync().AsTask(cts.Token, progressCallback);
我做错了什么?或者什么会导致这种异常?
编辑:我解决了我的问题,因为我在这里和我的答案中发表了评论。我认为最后我基本上只是将一些数据发送到服务器,这些数据被识别和解释为我想要的。因此,如果我使用BackgroundUploader,我不仅要上传一些文件,还要发送有关我如何做到这一点的信息(正如我在回答中提到的)。因此,通过同样的想法,我也可以将文件夹上传到服务器,并且我不发送任何实际内容,只是有关如何执行此操作的一些描述。如果我比较我通过HttpRequest和BackgroundUploader发出的请求,它们是平等的,这就是我想要的。
所以问题部分是请求的标头。我的请求中有一些被服务器识别的标头,我试图通过 SetRequestheader 方法将其放入 BackgroundUploader,但它不起作用。正如Kieqic建议的那样,我使用了Fiddler,并通过它比较了HttpRequest和BackgroundUploader提出的请求。我发现它们完全不同。因此,通过 SetRequestheader,我添加了一些部分,例如预期的内容类型,对于标头的其余部分以使它们相等,我将其添加到文件内容之前作为字节数组。这很有效,所以结论是在我的情况下使用 Fiddler 帮助我如何构建请求标头。