HttpClient无法正常工作

时间:2018-05-13 10:09:19

标签: c# asynchronous xamarin.android async-await httpclient

所以我正在尝试使用http客户端向API发送一个多形式的POST,但它只是挂在那里。我在控制台中测试这个代码并且它应该正常工作,但后来我尝试像UI一样运行它

private static async Task<string> ApiTask(...)
{
    var SourceStream = File.Open(imgpath,FileMode.Open);
    var FileStreamContent = new StreamContent(SourceStream);
    FileStreamContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");
    var client = new HttpClient();
    using (var formData = new MultipartFormDataContent())
    {
        formData.Add(new StringContent("this is a test"),"comment");
        formData.Add(new StringContent("Command: detect"),"message");
        formData.Add(fileStreamContent, "image","image.jpg");
        var response = await client.PostAsync(url,formData).ConfigureAwait(false);
        var responseString = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
        return responseString
    }
}

我从EventHandler

中调用它
public async void buttnclck(object sender, EventArgs e)
{
    var task = await ApiTask(...);
    lblresult.Text = task;
}

但正如我所说的那样,代码只是在de .PostAsync行中保持不变或者抛出System.Threading.Task.TaskCanceledException。

那么我在这里错过了什么?我讨厌async / await方法就好了,但很明显我不是。我也尝试使用.Result但它甚至无法工作并且会抛出System.AggregateException。所以,请帮助,一直试图让其工作修改代码作为其他建议的响应,但仍然无法正常工作

编辑: 经过几个小时的调试和搜索,我发现我的问题依赖于formData.Add(FileStreamContent, "image","image.jpg");也许我没有正确地序列化图像?我怎样才能解决这个问题??

0 个答案:

没有答案