久久精品国产2020_久久久国_天天操夜夜爱_视频在线亚洲_久本草在线中文字幕亚洲欧美_青青草娱乐在线

首頁 - 柑橘百科 > HTTPX 基礎教程

HTTPX 基礎教程

發布于:2023-04-20 作者:admin 閱讀:105
󦘖

微信號

WWW2450711172

添加微信

加速已經起頭

詳細來說,詳細來說引入 HTTPX:

>>> import httpx

那時,讓他們試著以獲取兩個頁面。

>>> r = httpx.get(https://httpbin.org/get)>>> r<Response [200 OK]>

反之亦然,發出HTTP POST許諾:

>>> r = httpx.post(https://httpbin.org/post, data={key: value})

PUT,DELETE,HEAD和OPTIONS許諾都遵從完全不異的式樣:

>>> r = httpx.put(https://httpbin.org/put, data={key: value})>>> r = httpx.delete(https://httpbin.org/delete)>>> r = httpx.head(https://httpbin.org/get)>>> r = httpx.options(https://httpbin.org/get)在URL中傳達模塊

要在許諾中次要包羅URL查閱模塊,請接納 paramsURL:

>>> params = {key1: value1, key2: value2}>>> r = httpx.get(https://httpbin.org/get, params=params)

要查閱那些值如何代碼為URL數組,他們能查抄和用做T7 *** 的結論URL:

>>> r.urlURL(https://httpbin.org/get?key2=value2&key1=value1))

您還能將工程項目條目做為值傳達:

>>> params = {key1: value1, key2: [value2, value3]}>>> r = httpx.get(https://httpbin.org/get, params=params)>>> r.urlURL(https://httpbin.org/get?key1=value1&key2=value2&key2=value3)積極響應文檔

HTTPX將手動處置將積極響應文檔音頻為Unicode文檔。

>>> r = httpx.get(https://www.example.org/)>>> r.text<!doctype html>\n<html>\n<head>\n<title>Example Domain</title>...

您能查抄和已接納何種代碼來音頻積極響應。

>>> r.encodingUTF-8

假設您必要全面籠蓋國際尺度立功行為并了了增設要接納的代碼,則也能那種做。

>>> r.encoding = *** O-8859-1十進造積極響應文檔

對非文檔積極響應,積極響應文檔也能十進造體例出訪:

>>> r.contentb<!doctype html>\n<html>\n<head>\n<title>Example Domain</title>...

任何 gzip和 deflateHTTP積極響應代碼城市手動為您音頻。假設 brotlipy已安拆,則 brotli還將撐持積極響應代碼。

例如,要按照許諾返回的十進造數據創建圖像,能接納以下代碼:

>>> from PIL import Image>>> from io import BytesIO>>> i = Image.open(BytesIO(r.content))返回 *** ON 積極響應文檔

凡是,Web API 積極響應將被代碼為 *** ON。

>>> r = httpx.get(https://api.github.com/events)>>> r.json()[{urepository: {uopen_issues: 0, uurl: https://github.com/... ... }}]自定義 Headers

要在傳出許諾中包羅其他標頭,請接納 headersURL模塊:

>>> url = http://httpbin.org/headers>>> headers = {user-agent: my-app/0.0.1}>>> r = httpx.get(url, headers=headers)發送表單數據

某些類型的HTTP許諾(例如 POST和 PUT許諾)能在許諾注釋中包羅數據。一種常見的添加體例是做為表單代碼數據,用做HTML表單。

>>> data = {key1: value1, key2: value2}>>> r = httpx.post("https://httpbin.org/post", data=data)>>> print(r.text){..."form": {"key2": "value2","key1": "value1"},...}

表單代碼的數據還能次要包羅給定鍵的多個值。

>>> data = {key1: [value1, value2]}>>> r = httpx.post("https://httpbin.org/post", data=data)>>> print(r.text){..."form": {"key1": ["value1","value2"]},...}發送分段文件上傳

您還能接納HTTP分段代碼上傳文件:

>>> files = {upload-file: open(report.xls, rb)}>>> r = httpx.post("https://httpbin.org/post", files=files)>>> print(r.text){..."files": {"upload-file": "<... binary content ...>"},...}

您還能通過接納工程項目元組做為文件值來顯式增設文件名和文檔類型:

>>> files = {upload-file: (report.xls, open(report.xls, rb), application/vnd.ms-excel)}>>> r = httpx.post("https://httpbin.org/post", files=files)>>> print(r.text){..."files": {"upload-file": "<... binary content ...>"},...}發送 *** ON 代碼數據

假設您只必要兩個簡單的鍵值數據構造,就能接納表單代碼的數據。對更復雜的數據構造,您凡是必要改用 *** ON代碼。

>>> data = {integer: 123, boolean: True, list: [a, b, c]}>>> r = httpx.post("https://httpbin.org/post", json=data)>>> print(r.text){..."json": {"boolean": true,"integer": 123,"list": ["a","b","c"]},...}發送十進造許諾數據

對其他代碼,應接納 bytesyield 的類型或生成器 bytes。

Content-Type在上傳十進造數據時,您可能還必要增設自定義標頭。

HTTPX 基礎教程

積極響應形態碼

他們能查抄和積極響應的HTTP形態代碼:

>>> r = httpx.get(https://httpbin.org/get)>>> r.status_code200

HTTPX還次要包羅兩個簡單的快速體例,用做通過其文檔短語出訪形態代碼。

>>> r.status_code == httpx.codes.OKTrue

他們能針對任何客戶端或辦事器錯誤積極響應(4xx或5xx形態代碼)引發異常:

>>> not_found = httpx.get(https://httpbin.org/status/404)>>> not_found.status_code404>>> not_found.raise_for_status()Traceback (most recent call last):File "/Users/tomchristie/GitHub/encode/httpcore/httpx/models.py", line 776, in raise_for_statusraise HttpError(message)httpx.exceptions.HttpError: 404 Not Found

任何勝利的積極響應代碼都將簡單地返回 None而不是引發異常。

>>> r.status_code == httpx.codes.OKTrue積極響應 Headers

積極響應標頭可做為類似于字典的接口接納。

>>> r.headersHeaders({content-encoding: gzip,transfer-encoding: chunked,connection: close,server: nginx/1.0.4,x-runtime: 148ms,etag: "e1ca502697e5c9317743dc078f67693f",content-type: application/json})

該 Headers數據類型是不區分大小寫的,所以你能接納任何本錢。

>>> r.headers[Content-Type]application/json>>> r.headers.get(content-type)application/json

按照RFC 7230,單個積極響應 headers 的多個值暗示為單個逗號分隔的值:

領受者能通過將每個隨后的字段值按挨次附加到合并的字段值上,并用下列分隔符分隔,將多個具有完全不異字段名的頭字段組合成一對“字段名:字段值”,而不會改動動靜的語義。逗號。流積極響應

對大型下載,您可能必要接納不將整個積極響應主體立即加載到內存中的流式積極響應。

您能流式傳輸積極響應的十進造文檔...

>>> with httpx.stream("GET", "https://www.example.com") as r:... for data in r.iter_bytes():... print(data)

或回應文字...

>>> with httpx.stream("GET", "https://www.example.com") as r:... for text in r.iter_text():... print(text)

或逐行流文檔...

>>> with httpx.stream("GET", "https://www.example.com") as r:... for line in r.iter_lines():... print(line)

HTTPX將接納通用行結尾,將所有情況國際尺度化為 \n。

在某些情況下,您可能希望在不該用任何HTTP文檔音頻的情況下出訪積極響應上的原始十進造。在那種情況下的任何文檔代碼web辦事器已諸如施加 gzip, deflate或 brotli將不會手動音頻。

HTTPX 基礎教程

>>> with httpx.stream("GET", "https://www.example.com") as r:... for chunk in r.iter_raw():... print(chunk)

假設您以上述任何一種體例接納流式積極響應,則 response.contentand response.text屬性將不成用,而且假設出訪將引發錯誤。但是,您還能接納積極響應流功用來有前提地加載積極響應主體:

>>> with httpx.stream("GET", "https://www.example.com") as r:... if r.headers[Content-Length] < TOO_LONG:... r.read()... print(r.text)Cookies

能輕松出訪積極響應中增設的任何cookie:

HTTPX 基礎教程

>>> r = httpx.get(http://httpbin.org/cookies/set?chocolate=chip, allow_redirects=False)>>> r.cookies[chocolate]chip

要將Cookie包羅在外發許諾中,請接納 cookies模塊:

>>> cookies = {"peanut": "butter"}>>> r = httpx.get(http://httpbin.org/cookies, cookies=cookies)>>> r.json(){cookies: {peanut: butter}}

Cookie是在 Cookies實例中返回的,該實例是一品種似dict的數據構造,帶有用做按其域或途徑出訪Cookie的其他API。

>>> cookies = httpx.Cookies()>>> cookies.set(cookie_on_domain, hello, there!, domain=httpbin.org)>>> cookies.set(cookie_off_domain, nope., domain=example.org)>>> r = httpx.get(http://httpbin.org/cookies, cookies=cookies)>>> r.json(){cookies: {cookie_on_domain: hello, there!}}url 重定向 和 汗青

默認情況下,HTTPX將對重定向施行除 HEAD許諾之外的任何 *** 做。

history積極響應的屬性可用做查抄和所有后續重定向。它包羅遵從它們的挨次的所有重定向積極響應的條目。

例如,GitHub將所有HTTP許諾重定向到HTTPS。

>>> r = httpx.get(http://github.com/)>>> r.urlURL(https://github.com/)>>> r.status_code200>>> r.history[<Response [301 Moved Permanently]>]

您能接納allow_redirects模塊修改默認的重定向處置:

>>> r = httpx.get(http://github.com/, allow_redirects=False)>>> r.status_code301>>> r.history[]

假設要發出 HEAD許諾,則能接納它來啟用重定向:

>>> r = httpx.head(http://github.com/, allow_redirects=True)>>> r.urlhttps://github.com/>>> r.history[<Response [301 Moved Permanently]>]超不時間

HTTPX默認為所有收集 *** 做都次要包羅合理的超時,那意味著,假設未準確成立毗連,則它應始末引發錯誤而不是無期限地掛起。

收集不活動的默認超時為五秒。您能將值修改為或多或少嚴酷:

>>> httpx.get(https://github.com/, timeout=0.001)

您還能完全禁用超時立功行為...

>>> httpx.get(https://github.com/, timeout=None)

有關高級超時辦理,請參閱“ 超時微調”。

認證體例

HTTPX撐持根本和摘要HTTP身份驗證。

要供給根本身份驗證根據,請將2個元組的純文檔 str或 bytes對象做為 auth模塊傳達給許諾函數:

>>> httpx.get("https://example.com", auth=("my_user", "password123"))

要供給摘要式身份驗證的根據,您必要 DigestAuth接納純文檔用戶名和密碼做為模塊實例化兩個對象。然后能將該對象做為 auth模塊傳達給上述許諾辦法:

>>> auth = httpx.DigestAuth("my_user", "password123")>>> httpx.get("https://example.com", auth=auth)<Response [200 OK]>

http://weixin. *** .com/r/NCgDG8LEpZ-arYZ4930m (二維碼手動識別)

󦘖

微信號

WWW2450711172

添加微信
二維碼

掃一掃關注我們

版權聲明:本文內容由互聯網用戶自發貢獻,本站不擁有所有權,不承擔相關法律責任。如果發現本站有涉嫌抄襲的內容,歡迎發送郵件至 201825640@qq.com舉報,并提供相關證據,一經查實,本站將立刻刪除涉嫌侵權內容。

相關文章

發表評論

二維碼
柑橘新品種

電話咨詢
柑橘技術

微信咨詢

微信號復制成功

打開微信,點擊右上角"+"號,添加朋友,粘貼微信號,搜索即可!

主站蜘蛛池模板: 亚洲国产精品ⅴa在线观看 色婷婷综合久久久中文字幕 | 日韩日韩日韩日韩日韩 | 狠狠亚洲 | 国产精品午夜性视频网站 | 黄色网页在线播放 | 久久97超级碰碰碰 | 亚洲无专砖码直接进入 | 亚洲欧美国产精品久久久 | 欧美一区二区三区视频在线观看 | 亚洲一区在线日韩在线深爱 | 九九精品免费观看在线 | 99久久久国产 | 日韩在线不卡 | 毛片毛片毛片毛片毛片毛片毛片 | 亚洲国产精品aa在线看 | 欧美天堂视频 | 久久国产欧美日韩精品 | 欧美整片完整片视频在线 | 浮力影院第一入口地址 | 国产精品久久久久久久久久久新郎 | 欧美综合激情 | 国内精品久久久久久影院网站小说 | 色综合久久综合网观看 | 欧美一区| 欧美色淫| 一级毛片一一级一级乇片 | 午夜寂寞剧场 | www.福利 | 国产精品亚洲一区二区三区在线观看 | 国产精品国产三级国产专播下 | 国产最新精品精品视频 | 天天干天天做天天操 | 成人做爰免费看网站 | 国产美女白浆 | 日韩在线手机看片免费看 | 国产成人午夜精品5599 | 成人免费在线播放视频 | 欧美videosex性极品hd | 久草综合在线 | 亚洲高清在线 | 自拍偷拍专区 |