我对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,它会抛出一个错误。有人可以帮我解决这个问题。
答案 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();