Theme NexT works best with JavaScript enabled

ShunNien's Blog

不積跬步,無以致千里;不積小流,無以成江海。

0%

使用 C# 連接 HTTPS URL

有朋友忽然在問 HTTPS 怎麼直接進行連接,想說乾脆直接整理一下好了;連接不外是透過 WebRequest 這個類別去操作,一個是直接使用 HttpWebRequest,另一個是使用 WebClient 這個 Component ,以下附上針對這兩者的簡單範例。

兩個方式中,比較需要注意的是強制讓憑證通過,一般瀏覽器憑證不通過還是會顯示出來,但是在程式這邊,不通過的話,後續就不會有結果;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void Main()
{
var url = "https://www.moi.gov.tw/";
string results;

// 強制認為憑證都是通過的,特殊情況再使用
//ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.AutomaticDecompression = DecompressionMethods.GZip;

// 加入憑證驗證
request.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate());

HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
results = sr.ReadToEnd();
sr.Close();
}
results.Dump();
}

httpWebRequest

1
2
3
4
5
6
7
8
9
10
11
12
13
void Main()
{
string html = string.Empty;
string url = @"https://www.moi.gov.tw/";

WebClient wc = new WebClient();

// 強制認為憑證都是通過的()
// ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
wc.Encoding = Encoding.UTF8;
html = wc.DownloadString(url);
html.Dump();
}

WebClient

參考資料

歡迎關注我的其它發布渠道