dart:io
庫中HttpClient
類的用法介紹如下。
用於與 HTTP 服務器通信的 HTTP 客戶端。
向 HTTP 服務器發送 HTTP 請求並接收響應。在對同一服務器的多個請求之間維護狀態,包括會話 cookie 和其他 cookie。
注意:HttpClient 提供低級 HTTP 函數。我們建議用戶從
中找到的更多 developer-friendly 和可組合 API 開始。package:http
HttpClient 包含許多將 HttpClientRequest 發送到 Http 服務器並接收回 HttpClientResponse 的方法。例如,您可以分別對 GET 和 POST 請求使用 get 、 getUrl 、 post 和 postUrl 方法。
發出一個簡單的 GET 請求:一個例子
getUrl
請求是一個兩步過程,由兩個 Future 觸發。當第一個 future 以 HttpClientRequest 結束時,底層網絡連接已經建立,但沒有發送數據。在第一個未來的回調函數中,可以在請求上設置 HTTP 標頭和正文。第一次寫入請求對象或調用close 將請求發送到服務器。
當從服務器接收到 HTTP 響應時,close 返回的第二個 future 以 HttpClientResponse 對象結束。此對象提供對響應的標頭和正文的訪問。主體可用作由 HttpClientResponse
實現的流。如果存在實體,則必須讀取它。否則會導致資源泄露。如果未使用主體,請考慮使用HttpClientResponse.drain。
var client = HttpClient();
try {
HttpClientRequest request = await client.get('localhost', 80, '/file.txt');
// Optionally set up headers...
// Optionally write to the request object...
HttpClientResponse response = await request.close();
// Process the response
final stringData = await response.transform(utf8.decoder).join();
print(stringData);
} finally {
client.close();
}
HttpClientRequest 的未來是由 getUrl 和 open 等方法創建的。
HTTPS 連接
HttpClient
可以發出 HTTPS 請求,使用 TLS (SSL) 安全網絡協議連接到服務器。如果服務器的證書由 Mozilla 編譯的知名受信任 CA 的默認列表上的根 CA(證書頒發機構)簽名,則使用 https: 方案調用 getUrl 將自動工作。
要添加自定義受信任的證書頒發機構,或將客戶端證書發送到請求證書的服務器,請將 SecurityContext 對象作為可選的 context
參數傳遞給 HttpClient
構造函數。可以在SecurityContext 對象上設置所需的安全選項。
標頭
默認情況下,所有HttpClient
請求都設置以下標頭:
Accept-Encoding: gzip
如果可能,這允許 HTTP 服務器對正文使用 gzip 壓縮。如果不需要此行為,請將 Accept-Encoding
標頭設置為其他內容。要關閉響應的 gzip 壓縮,請清除此標頭:
request.headers.removeAll(HttpHeaders.acceptEncodingHeader)
關閉HttpClient
HttpClient
支持持久連接並緩存網絡連接,以便盡可能將它們重用於多個請求。這意味著網絡連接可以在請求完成後保持打開一段時間。使用HttpClient.close 強製HttpClient
對象關閉並關閉空閑的網絡連接。
打開和關閉代理
默認情況下,HttpClient
使用環境中可用的代理配置,請參閱 findProxyFromEnvironment 。要關閉代理的使用,請將 findProxy 屬性設置為 null
。
HttpClient client = HttpClient();
client.findProxy = null;
相關用法
- Dart HttpClient.findProxy用法及代碼示例
- Dart HttpClientRequest用法及代碼示例
- Dart HttpClient.findProxyFromEnvironment用法及代碼示例
- Dart HttpClientResponse用法及代碼示例
- Dart HttpClient.connectionFactory用法及代碼示例
- Dart HttpClientRequest.followRedirects用法及代碼示例
- Dart HttpClient.keyLog用法及代碼示例
- Dart HttpClientRequest.abort用法及代碼示例
- Dart HttpRequest.postFormData用法及代碼示例
- Dart HttpOverrides用法及代碼示例
- Dart HttpServer.defaultResponseHeaders用法及代碼示例
- Dart HttpRequest.request用法及代碼示例
- Dart HttpDate.parse用法及代碼示例
- Dart HttpRequest用法及代碼示例
- Dart HttpHeaders用法及代碼示例
- Dart HttpServer用法及代碼示例
- Dart HttpRequest.getString用法及代碼示例
- Dart HttpRequest構造函數用法及代碼示例
- Dart HttpResponse用法及代碼示例
- Dart HtmlCollection.last用法及代碼示例
- Dart HtmlEscape用法及代碼示例
- Dart HtmlEscapeMode用法及代碼示例
- Dart HtmlCollection.elementAt用法及代碼示例
- Dart HtmlCollection.length用法及代碼示例
- Dart HtmlDocument.registerElement2用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 HttpClient class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。