нет перегрузки для метода 'PutAsync' принимает 1 аргумент - PullRequest
0 голосов
/ 17 октября 2018

Я относительно новичок в веб-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 голосов
/ 20 октября 2018

Привет всем моим звонкам в REST API. Я использую эту библиотеку: 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();
0 голосов
/ 17 октября 2018

HttpClient.PutAsync метод, принимает 2 аргумента:

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

Вы можете прочитать все о HttpClient в этой ссылке

0 голосов
/ 17 октября 2018

Метод PutAsync () принимает Uri, HttpContent в качестве параметров.Вы не можете передать оба URL, данные как один параметр.Поэтому, пожалуйста, отредактируйте ваш код, чтобы указать правильный тип.

using (var client = new HttpClient())
{
    List<string> param = new List<string>();
    param.Add(LblUnitsConsumed.Text);
    param.Add(LblUnitsRemaining.Text);
    param.Add(deviceIDtxt.Text);


    string jsonString = JsonConvert.SerializeObject(param);
    var requestUrl = new Uri(WebApiUrl + "/api/transaction/updateDevice/");
    using (HttpContent httpContent = new StringContent(jsonString))
    {
        httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
        HttpResponseMessage response = client.PutAsync(requestUrl, httpContent).Result;
    }   
}  
0 голосов
/ 17 октября 2018

Чтобы добавить к тому, что уже было прокомментировано, PostAsync и PutAsync ожидают, что некоторый объект HttpContent будет передан в качестве тела запроса.Если API действительно не требует / не ожидает какого-либо тела запроса, вам все равно придется создать этот объект и передать его.

Вы можете узнать больше о требованиях этого вызова метода и о том, что вы можете использовать как HttpContent. здесь

...