UWP及.NET Framework 4 Client Profile適用的HttpClient()

如果你正在使用.NET Framework 4 Client Profile,或者是使用UWP(Universal Windows Platform)來進行程式設計,那麼你一定會發現再也無法使用System.Web下的所有組件(DLL)的參考,這時候要不就是切換到全版本的.NET Framework(目前尚未確定UWP是否可切換,但理論上不行),不然就是乖乖地使用比較新的System.Net、System.Net.Http方式來進行編碼啦!

因為自己在「非重要的場合」中,慣於使用System.Net.WebClient()來進行實作,這一點在新的UWP架構中也是被拿掉的,要不你就是改採用傳統的System.Net.HttpWebRequest()及System.Net.HttpWebResponse()來實作,要不就是認命一點,使用System.Net.Http.HttpClient()的非同步來實作。本篇文章即為使用System.Net.Http.HttpClient()方式,記載於此供日後快速參考,但HttpClient在使用上有雷,請注意最下方的相關參考之連結。

利用System.Net.Http.HttpClient()來取得網站網頁資訊

private async void Button_Click(object sender, RoutedEventArgs e)
{
  uResult.Text = await DownloadPageAsync();
}

static async System.Threading.Tasks.Task<string> DownloadPageAsync()
{
  string cURL = "https://www.google.com/";
  using (HttpClient oHC = new HttpClient())
  {
    using (HttpResponseMessage oHR = await oHC.GetAsync(cURL))
    { 
      using (HttpContent oCT = oHR.Content)
      {
        string cResult = await oCT.ReadAsStringAsync();
        if (cResult.Length > 1000)
          return cResult.Substring(0, 1000);
        else
          return cResult;
      }
    }
  }
}

相關參考:

System.Net System.Net.Http HttpClient() async await