簡介

HttpLib(C# .NET Framework)簡介

一、程式庫介紹

HttpLib(作者 James Thorne)是一套依據 Apache 2.0 授權條款 釋出的 .NET HTTP 請求輔助程式庫,用來簡化非同步網路請求,支援檔案上傳與網頁下載,採用鏈式呼叫寫法。

注意:請勿與 C++ 的同名程式庫 httplibcom.daniyarkaliyev.httplib 搞混,務必安裝這個套件:HttpLib

若未安裝套件,程式碼就會找不到 Http 類型

二、安裝步驟

  1. 在方案總管對專案按右鍵 → 管理 NuGet 套件
  2. 切換到【瀏覽】分頁,搜尋 HttpLib
  3. 挑選作者為 James Thorne (@j6mes) 的套件,點擊安裝(版本 v2.0.16.94)
  4. 等候輸出視窗顯示安裝完成

三、匯入 HttpLib

1. 遺漏命名空間參考

必須寫在程式碼檔案的最開頭:

using HttpLib;

缺少這一行,Http.Get() 就會出現紅色波浪底線。

透過 NuGet 管理器安裝完畢後,大多數情況會自動加入參考,不需要手動補上。

2. 程式範例
using System;
using HttpLib; // 重要命名空間

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Http.Get("https://archive.codeplex.com/?p=httplib")
                .OnSuccess(result =>
                {
                    Console.Write(result);
                })
                .Go();

            Console.ReadKey();
        }
    }
}Code language: JavaScript (javascript)

部分網站會阻擋爬蟲請求,執行時可能拋出錯誤,也有可能網站已經無法連線。

An unhandled exception of type “System.Net.WebException” occurred in JumpKick.HttpLib.dll

遇到以上錯誤時,可以先用瀏覽器測試網頁能不能打開;無法存取的話,就替換成其他網域名稱。

四、語法說明

Http.Get("url")               // 建立GET請求
.OnSuccess(result => {})      // 請求成功回呼,result 代表網頁回傳內容
.Go();                        // 執行非同步請求Code language: JavaScript (javascript)
  • .Go():啟動非同步網路呼叫,不會卡住主執行緒
  • 擴充用法:使用 .OnError() 攔截網路異常
Http.Get("https://example.com")
.OnSuccess(res=>Console.WriteLine(res))
.OnError(ex=>Console.WriteLine("請求失敗:"+ex.Message))
.Go();Code language: JavaScript (javascript)

範例裡的測試網址 已經失效,直接執行會請求失敗,建議改用:https://httpbin.org/html

六、完整範例

using System;
using HttpLib;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // 使用可正常運作的測試位址
            Http.Get("https://httpbin.org/html")
                .OnSuccess(result =>
                {
                    Console.WriteLine("請求成功:");
                    Console.Write(result);
                })
                .OnError(err =>
                {
                    Console.WriteLine("請求發生異常:" + err.Message);
                })
                .Go();

            Console.WriteLine("非同步請求已送出,按任意鍵離開");
            Console.ReadKey();
        }
    }
}Code language: JavaScript (javascript)

就算已經加上 using HttpLib; 還是出現紅色標示,我可以教你清除 NuGet 快取、重新安裝套件的操作。

備註

httpbin.org 是開源免費的 HTTP 測試服務,由 Python requests 函式庫作者開發,專門用來除錯 HTTP 請求。

/html 是它提供的其中一個 API 路徑。

執行效果

打開連結會直接回傳一份簡單 HTML 頁面:

簡介

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *