PostAsync HttpRequestException:无法解码原始数据



我试图使一个函数上传文件(pdf, docx, xls)到http API。我试过邮差,效果很好。但当我尝试从应用程序,是不工作。

private async Task UploadFile()
{
String fileguid = this.noteModel.Fileguid.ToString();
try
{
var file = await CrossFilePicker.Current.PickFile();
if (file == null)
return;
string fileName = file.FileName;
string url = App.apiServer + "web/Token13/" + App.token + "/" + fileguid;
var content = new MultipartFormDataContent();
content.Headers.ContentType.MediaType = "multipart/form-data";

content.Add(new StreamContent(file.GetStream()), "file", fileName);
var httpClient = new HttpClient();
var response = await httpClient.PostAsync(url, content);
String status =  response.StatusCode.ToString();
}
catch (Exception ex)
{
System.Console.WriteLine("Exception choosing file: " + ex.ToString());
}
}

我在'var response = await httpClient.PostAsync(url, content);'行有以下错误:

2021-02-12 20:03:58.805 Project.iOS[2202:520692] Exception choosing file: System.Net.Http.HttpRequestException: cannot decode raw data ---> 
Foundation.NSErrorException: Error Domain=NSURLErrorDomain Code=-1015 "cannot decode raw data" 
UserInfo={NSLocalizedDescription=cannot decode raw data, 
NSErrorFailingURLStringKey=http://ip/appservertest/web/Token13/id, 
NSErrorFailingURLKey=http://ip/appservertest/web/Token13/id, 
_NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <FD8D1034-CF42-41C8-A214-BE4D87D1D15D>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <FD8D1034-CF42-41C8-A214-BE4D87D1D15D>.<1>, NSUnderlyingError=0x282880000 {Error Domain=kCFErrorDomainCFNetwork Code=-1015 "(null)" UserInfo={NSErrorPeerAddressKey=<CFData 0x2805e64e0 [0x1f6084660]>{length = 16, capacity = 16, bytes = 0x100200505991f6e00
000000000000000}}}}
--- End of inner exception stack trace ---
at System.Net.Http.NSUrlSessionHandler.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) [0x001d4] in /Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/src/Xamarin.iOS/Foundation/NSUrlSessionHandler.cs:527 
at System.Net.Http.HttpClient.FinishSendAsyncBuffered (System.Threading.Tasks.Task`1[TResult] sendTask, System.Net.Http.HttpRequestMessage request, System.Threading.CancellationTokenSource cts, System.Boolean disposeCts) [0x0017e] in /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/src/Xamarin.iOS/external/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:506 
at Project.Views.NotesEdit.UploadFile () [0x0018f] in C:RepositoryProjectProjectViewsNotesEdit.xaml.cs:268 

你能给我一个提示吗,为什么不工作?

提前感谢!

似乎你还没有完成你的标题与MediaTypeHeaderValue

var content = new StreamContent(stream);
content.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
FileName = imageName,
Name = imageName
};
content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
var multipartContent = new MultipartFormDataContent();
multipartContent.Add(content);
var result = await client.PostAsync(url, multipartContent.Add);

最新更新