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에서와 동일합니다. 그리고 예외가 발생했습니다 메서드에서 지원되지 않는 미디어 유형 (415) HandleUploadAsync on line

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

무엇이 잘못 되었나요? 아니면 이런 종류의 예외가 발생할 수 있습니까?

편집 : 편집 : 여기 내 대답과 내 대답에 내 문제를 해결했습니다. 나는 기본적으로 단지 내가 원하는대로 인식되고 해석되는 서버에 일부 데이터를 보내는 것이라고 생각한다. 그래서 BackgroundUploader를 사용하면 일부 파일을 업로드하는 것이 아니라 내가하는 일에 대한 정보도 보내고 있습니다 (내 답변에서 언급했듯이). 그래서 같은 생각으로 나는 또한 서버에 폴더를 업로드 할 수 있습니다. 그리고 나는 그것을 수행하는 방법에 대한 실제 내용을 보내지 않을 것입니다. 그리고 내가 HttpRequest와 BackgroundUploader에 의해 작성한 요청을 비교한다면 그들은 평등하고 내가 원하는 것을 얻었습니다.

+0

오류는 서버에서 발생합니다. [Fiddler] (http://fiddler2.com/home)를 사용하여 요청과 응답을 분석하는 것이 좋습니다. 제 추측으로는 다중 파트/폼 데이터 표준을 따르지 않는 것입니다. Wikipedia 예제를보십시오 : http://en.wikipedia.org/wiki/MIME#Multipart_messages. – kiewic

+0

응답 해 주셔서 감사합니다. 당신 말이 맞아요. 나는 Fiddler를 혼자서 사용하는 것에 대해 생각해야합니다. 어쨌든 나는 그것을 시도하고 내가 처음 생각한 것을 발견했지만 Content-Type의 정의가 잘못되었다는 적절한 해결책을 찾을 수 없었다. 그래서 지금 나는 "multipart/related; type = \"application/xop + xml \ ""을 사용하고 있습니다. 이것은 피들러에 의해 디버깅되는 동안 제안되었습니다. 하지만 지금은 (400) 나쁜 요청 예외를 받고 있고 불행히도 나는 어떤 추가 정보도 얻지 못하고있다. 그래서 나는 이것을 일으킬 수있는 단서가 없습니다. –

답변

0

그래서 문제의 부분은 요청 헤더였습니다. 서버에서 인식 할 수있는 요청 헤더에 SetRequestheader 메서드를 통해 BackgroundUploader에 넣으려고했으나 제대로 작동하지 않았습니다. Kieqic이 Fiddler를 사용했고 HttpRequest와 BackgroundUploader가 만든 요청을 비교하는 방법을 제안했습니다. 나는 그들이 완전히 다른 것을 알았다. 따라서 SetRequestheader를 통해 예상되는 Content-Type과 같은 부분을 추가하고 헤더의 나머지 부분에 대해 파일의 내용을 바이트 배열로 추가하기 전에 동일하게 만듭니다. 그리고 이것이 작동하므로 요청 헤더를 구성하는 방법을 도왔던 Fiddler를 사용하는 결론이 내 경우에 있습니다.