![](/img/trans.png)
[英]Httpclient.GetStringAsync works in UWP and iOS, but not Android on Xamarin Forms
[英]Xamarin Forms, Android and HttpClient issue
我在Xamarin Forms
for iOS
創建了HttpClient
函數,用於將圖片從設備發送到服務器。 核心功能是
var content = new MultipartFormDataContent();
var fileContent = new ByteArrayContent(fileBytes);
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data");
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = fName
};
fileContent.Headers.ContentDisposition.Parameters
.Add(new NameValueHeaderValue("userId", UserId.ToString()));
content.Add(fileContent);
using (var client = new HttpClient()) {
client.DefaultRequestHeaders.Add("authenticationToken", SyncData.Token);
HttpResponseMessage response = await client.PostAsync(url, content);
if (response.IsSuccessStatusCode)
{
// more code
}
}
我正在使用System.Net.Http
。 我試圖在Android中的項目中使用相同的功能,但令人驚訝的是它無法正常工作。 問題出在標題中:如果我檢查fileContent
我可以看到除服務器上的webapi以外的所有鍵FileName
未被接收。
經過一些日志后,我更改了此功能,添加了更多client.DefaultRequestHeaders
類的
client.DefaultRequestHeaders.Add("FileName", fName);
現在,webapi接收FileName
參數。
現在我的問題是:我錯了什么?
我個人使用MultipartFormDataContent上的Add方法來接受文件名。
var content = new MultipartFormDataContent();
var fileContent = new ByteArrayContent(fileBytes);
...
// Use the overload Add method which accepts a file name
content.Add(fileContent, "FileName", fName);
...
我不確定這是否可以解決您的問題,但是對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.