Я очень новый для .Net, и я пытаюсь получить данные после вызова метода отдыхаКак получить данные с отдыхом api?
Моей функции на самом деле так:
private Task<HttpResponse> getUser(string user)
{
string url = "http://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=" + user + "&api_key=xxx&format=json";
var client = new HttpClient();
return client.GetAsync(url).ContinueWith(request =>
{
var response = request.Result;
response.EnsureSuccessStatusCode();
return response.Content.ReadAsStringAsync().ContinueWith(t =>
{
var result = new HttpResponseMessage();
response.CreateContent(t.Result);
return response;
});
}).Unwrap();
}
Но я получаю эту ошибку:
«System.Net.Http.HttpResponseMessage» не содержит определения для « CreateContent» и ни один из методов расширения «» CreateContent принимающих первого аргумент типа «System.Net.Http.HttpResponseMessage» мог (вы не указали директиву или ссылку на сборку?)
Возможно, я просто что-то забыл, но даже после некоторых поисков я не нашел решения. Есть ли альтернативные способы решения?
Благодарим за помощь
Если вы используете async, вы должны использовать ключевое слово 'await', чтобы оно читалось больше как синхронный код и его легче понять. Ваши лямбды затрудняют понимание потока вашего кода. Кроме того, в [HttpResponseMessage] не существует метода 'CreateContent()' (https://msdn.microsoft.com/en-us/library/system.net.http.httpresponsemessage (v = vs.118) .aspx). Возможно, вы хотели просто установить свойство Content? – mason
Вот хороший пример того, что вы пытаетесь сделать здесь [C# HttpClient] (http://www.dotnetperls.com/httpclient) и здесь [Не блокировать код Async] (http: // blog. stephencleary.com/2012/07/dont-block-on-async-code.html). Как сказал каменщик, используйте вместо лямбда ожидания. – R0MANARMY
см. Этот ответ http://stackoverflow.com/a/9800077/2374987 –