1

我試圖將一些avi文件上傳到服務器。它與HttpRequest正常工作,但我需要繼續上傳,即使我暫停應用程序,所以這就是爲什麼我想使用BackgroundUploader。我遵循MSDN http://msdn.microsoft.com/en-us/library/windows/apps/jj152727.aspx上的這個指導原則。所以我的代碼看起來像這樣。BackgroundUploader中的異常

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上的相同。我得到異常在方法HandleUploadAsync線上的不受支持的媒體類型(415)

await upload.StartAsync().AsTask(cts.Token, progressCallback); 

我在做什麼錯?或者什麼會導致這種異常?

編輯:我解決了我的問題,因爲我在這裏和我的答案評論。我認爲最後我基本上只是發送一些數據到服務器,這些數據被識別並解釋爲我想要的。所以如果我使用BackgroundUploader,我不僅會上傳一些文件,我還會發送關於我如何做的信息(正如我在回答中提到的)。因此,通過相同的想法,我也可以上傳文件夾到服務器,通過我不發送任何實際內容只有一些說明如何做到這一點。如果我比較HttpRequest和BackgroundUploader提出的請求,它們是相等的,那就是我想要的。

+0

錯誤來自您的服務器。我會建議使用[Fiddler](http://fiddler2.com/home)來分析請求和響應。我的猜測是你沒有遵循multipart/form-data標準。看維基百科的例子:http://en.wikipedia.org/wiki/MIME#Multipart_messages。 – kiewic

+0

感謝您的回覆。你是對的,我應該考慮自己使用Fiddler。無論如何,我試了一下,發現我的第一個想法,但無法找到適當的解決方案,我的內容類型的定義是錯誤的。所以現在我正在使用「multipart/related; type = \」application/xop + xml \「」,這是在Fiddler調試時提出的。但是現在我得到了(400)錯誤的請求異常,很不幸,我沒有得到任何額外的信息。所以我不知道會導致什麼。 –

回答

0

所以問題部分是請求頭。我的請求中有一些頭文件被服務器識別,我試圖通過SetRequestheader方法將它提交給BackgroundUploader,但它不起作用。由於Kieqic建議我使用Fiddler,並且通過HttpRequest和BackgroundUploader進行比較。我發現它們完全不同。所以通過SetRequestheader我添加了一些部分,如預期的Content-Type和頭部的其餘部分以使它們相等,我將它作爲字節數組添加在我的文件內容之前。而這個工作,所以結論是在我的情況下使用提琴手,幫助我如何構建請求標題。