从HTTPResponseMessage读取响应内容

时间:2016-07-27 13:31:06

标签: azure azure-functions

我正在编写队列触发器功能,我从队列中读取数据,并使用RESTFul服务向他们发送另一个Web服务。现在,我正在测试一个非常简单的REST api调用,我只需要在头文件中提供令牌,并期望从服务器获得非常简单的JSON响应。 JSON只包含一个电子邮件地址条目,就是它。我的理解是,如果我异步读取响应,我需要更改函数原型以符合异步调用。但这在Azure功能应用程序中是不可能的。那么阅读JSON响应对象的最佳方法是什么?

这是我到目前为止的尝试:

using System;
using System.Net.Http;
using System.Net.Http.Headers;

public static void Run(string myQueueItem, TraceWriter log)
{
   string URL = "https://api.spotlightessentials.com/api/v2/user";
   HttpClient client = new HttpClient();
   client.BaseAddress = new Uri(URL);


   client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
   client.DefaultRequestHeaders.Add("token","<Token value>");

   HttpResponseMessage response = client.GetAsync("").Result; 

   if (response.IsSuccessStatusCode)
   {
        // How do I read Json response here
   }

   }
   else
   {
        Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
   }  

} 

1 个答案:

答案 0 :(得分:0)

在你的

if (response.IsSuccessStatusCode)

你可以这样做:

var responseData = await response.Content.ReadAsAsync<YourObjectTypeHere>();

或者您也可以根据自己的需要做同样的事情:

var responseData = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();

if (!string.IsNullOrWhiteSpace(responseData))
{
    var responseDataObject = 
        JsonConvert.DeserializeObject<YourObjectTypeHere>(responseData);
}

或者2的部分组合。