HttpLib(C# .NET Framework)簡介
一、程式庫介紹
HttpLib(作者 James Thorne)是一套依據 Apache 2.0 授權條款 釋出的 .NET HTTP 請求輔助程式庫,用來簡化非同步網路請求,支援檔案上傳與網頁下載,採用鏈式呼叫寫法。
注意:請勿與 C++ 的同名程式庫
httplib、com.daniyarkaliyev.httplib搞混,務必安裝這個套件:HttpLib
若未安裝套件,程式碼就會找不到 Http 類型

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

三、匯入 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 頁面:
簡介
Next: GET 請求