我有正常工作的网络请求,但它仅仅是返回状态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);
}
如果你指的是在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();
在@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
作为一个共享的实例,而不是在使用从句使用它。
我通常做的,类似的回答一:
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#模型类。