問題描述
使用httpClient獲取的HttpResponseMessage類型的response,直接對其toString()獲取的是請求的響應頭,並沒有獲取響應體的內容
解決辦法
HttpResponseMessage.Content 屬性聲明 HTTP 響應的內容。HttpContent.ReadAsStringAsync 方法將 HTTP 內容作為異步操作寫入到字符串中。
參考Demo
下面以Azure Face API為案例簡要介紹其使用方法
using System;
using System.Net.Http;
using System.Text;
using System.Web;
namespace FaceApiDemo
{
class Program
{
static void Main(string[] args)
{
MakeRequest();
Console.WriteLine("Hit ENTER to exit...");
Console.ReadLine();
}
static async void MakeRequest()
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
// Request headers
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "<key>");//Face API key
// Request parameters
queryString["returnFaceId"] = "true";
queryString["returnFaceLandmarks"] = "false";
queryString["returnFaceAttributes"] = "age";
var uri = "https://api.cognitive.azure.cn/face/v1.0/detect?" + queryString;
HttpResponseMessage response;
// Request body
byte[] byteData = Encoding.UTF8.GetBytes("{\"url\":\"http://imgsrc.baidu.com/baike/pic/item/4034970a304e251ff1e3819aa486c9177f3e53bf.jpg\"}");//圖片URL
using (var content = new ByteArrayContent(byteData))
{
response = await client.PostAsync(uri, content);
}
//response result
string result = await response.Content.ReadAsStringAsync();
Console.WriteLine("response:" + result);
}
}
}