如何在调用HttpClient PostAsync方法上传图像时解决HttpRequestException

问题描述 投票:0回答:2

我们正在使用xamarin ios本机应用程序中的聊天应用程序,我们希望使用HttpClient PostAsync()方法将图像上传到服务器,但是它的抛出异常就像

System.Net.Http.HttpRequestException:发送请求时发生错误---> System.Net.WebException:错误:ConnectFailure(没有到主机的路由)---> System.Net.Sockets.SocketException:没有到主机的路由....

我们选择图片后上传的代码是..

public async void UploadToServer(string filePath, string filename, string fileExtension,long fileSize)
{
    using(var client = new HttpClient())
    using(var content= new MultipartFormDataContent())
    {
        client.BaseAddress = new Uri("http://*////");

        var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(filePath));

        fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = filePath
        };

        content.Add(fileContent);

        var result = await client.PostAsync("api/FileUpload?groupID =" + ChatDetaiils.groupID + "&memberID=" + UserLogin.userID + "&Message=File Test&chatType=File&FileName="+filename+"&fileSize="+fileSize+"&fileExtension="+fileExtension+"",content);

    }
}

我们在我们的xamarin android原生应用程序中使用相同的代码,并且它在android中运行良好。我们不知道我的错误是什么。我们正在使用visual studio for mac。

请帮忙解决这个问题或告诉我另一种上传方法...

c# ios xamarin xamarin.ios
2个回答
0
投票

我想你可能会得到更好的结果:

var values = new Dictionary<string, string>
{
    { "groupID", ChatDetaiils.groupID },
    { "memberID", UserLogin.userID },
    { "Message", File },
    // etc..etc
};

var content = new FormUrlEncodedContent(values);

var result = await client.PostAsync("api/FileUpload, content);

0
投票

我已经通过将正确的uri放在基址中解决了它。 client.BaseAddress = new Uri("http:***.***.*.**");

© www.soinside.com 2019 - 2024. All rights reserved.