在拿到Oauth的token後就要用來調用web api了,但官方示例代碼中用的均是HttpClient,如果按照官方的教程做當然是OK的,但我之前寫的調用web api的C#公共類用的均是HttpWebRequest,如果要換成HttpClient那就意味着公共類得重寫,有點麻煩。
那是否有辦法繼續使用HttpWebRequest來調用web api呢,答案當然是可以的,只需要修改我之前公共類的下方註釋中的兩行,就可以繼續使用了。
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(weburi);
req.Method = "Get";
req.Accept = "application/json";
req.ContentType = "application/json; charset=utf-8";
req.Headers.Set("OData-MaxVersion", "4.0");
req.Headers.Set("OData-Version", "4.0");
req.Headers.Set("Prefer", "odata.include-annotations=OData.Community.Display.V1.FormattedValue");
//和之前的區別就是用下面這句替換之前的username和password的NetworkCredential
req.Headers.Set("Authorization", "Bearer " + access_token);
//下面這句要加,這才之前的博文中有提及,不加會報錯
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
StreamReader read = new StreamReader(res.GetResponseStream());
string result = read.ReadToEnd();
}