方法'PutAsync'的重载没有1个参数

时间:2018-10-17 11:56:50

标签: c# .net winforms httpclient

我对Web API比较陌生。我已经在客户端用winForm编写了如下代码:

using (var client = new HttpClient())
{
    List<string> param = new List<string>();
    param.Add(LblUnitsConsumed.Text);
    param.Add(LblUnitsRemaining.Text);
    param.Add(deviceIDtxt.Text);
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    HttpResponseMessage rsp = client.PutAsync(WebApiUrl + "/api/transaction/updateDevice/" + param).Result;
}    

在运行时显示错误为“方法'PutAsync'不重载需要1个参数”。对于GetAsync,DeleteAsync,它工作得很好。但是对于PutAsync,它会抛出一个错误。有人可以帮我解决这个问题。

4 个答案:

答案 0 :(得分:0)

要添加到已经注释过的内容中,PostAsync和PutAsync希望某些HttpContent对象作为请求主体传递。如果API确实不需要/期望任何请求正文,则仍将必须创建此对象并将其传递。

您可以详细了解此方法调用的要求以及可以用作HttpContent here

的内容。

答案 1 :(得分:0)

HttpClient.PutAsync方法,带有2个参数:

HttpClient client = new HttpClient();
client.PutAsync(new Uri("url"), new HttpContent("dataString"));

您可以在this链接中阅读有关HttpClient的所有信息

答案 2 :(得分:0)

PutAsync()方法接受Uri,HttpContent作为参数。您不能将两个URL数据都作为一个参数传递。因此,请编辑您的代码以提供正确的类型。

data

答案 3 :(得分:-1)

您好,我对REST API的所有调用我都使用以下lib: https://github.com/jgiacomini/Tiny.RestClient

调用API更容易。

var client = new TinyRestClient(WebApiUrl);

var response = await client.
                Put("/api/transaction/updateDevice/").
                AddFileContent(fileInfo, "text/plain").
                ExecuteAsHttpResponseMessageAsync();