从HTTP请求接收JSON数据返回(Receiving JSON data back from HT

2019-06-25 07:16发布

我有正常工作的网络请求,但它仅仅是返回状态OK,但我需要我要求它返回的对象。 我不知道如何让我请求JSON值。 我是新来使用对象HttpClient的,有我错过了一个财产? 我真的需要返回的对象。 谢谢你的帮助

打出电话 - 运行良好回报的状态确定。

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var responseMsg = client.GetAsync(string.Format("http://localhost:5057/api/Photo?)).Result;

该API获取方法

//Cut out alot of code but you get the idea
public string Get()
{
    return JsonConvert.SerializeObject(returnedPhoto);
}

Answer 1:

如果你指的是在System.Net.HttpClient .NET 4.5,你可以使用获得通过GetAsync返回的内容HttpResponseMessage.Content属性作为HttpContent派生的对象。 然后,您可以阅读的内容,使用字符串HttpContent.ReadAsStringAsync方法或使用流ReadAsStreamAsync方法。

的HttpClient的类文件包括该实施例中:

  HttpClient client = new HttpClient();
  HttpResponseMessage response = await client.GetAsync("http://www.contoso.com/");
  response.EnsureSuccessStatusCode();
  string responseBody = await response.Content.ReadAsStringAsync();


Answer 2:

@Panagiotis Kanavos的回答号楼,这里的工作方法,例如这也将返回响应作为对象而不是字符串:

public static async Task<object> PostCallAPI(string url, object jsonObject)
{
    try
    {
        using (HttpClient client = new HttpClient())
        {
            var content = new StringContent(jsonObject.ToString(), Encoding.UTF8, "application/json");
            var response = await client.PostAsync(url, content);
            if (response != null)
            {
                var jsonString = await response.Content.ReadAsStringAsync();
                return JsonConvert.DeserializeObject<object>(jsonString);
            }
        }
    }
    catch (Exception ex)
    {
        myCustomLogger.LogException(ex);
    }
    return null;
}

请记住,这只是一个例子,那你可能想使用HttpClient作为一个共享的实例,而不是在使用从句使用它。



Answer 3:

我通常做的,类似的回答一:

var response = await httpClient.GetAsync(completeURL); // http://192.168.0.1:915/api/Controller/Object

if (response.IsSuccessStatusCode == true)
    {
        string res = await response.Content.ReadAsStringAsync();
        var content = Json.Deserialize<Model>(res);

// do whatever you need with the JSON which is in 'content'
// ex: int id = content.Id;

        Navigate();
        return true;
    }
    else
    {
        await JSRuntime.Current.InvokeAsync<string>("alert", "Warning, the credentials you have entered are incorrect.");
        return false;
    }

当“模式”是你的C#模型类。



文章来源: Receiving JSON data back from HTTP request