如果要進行客戶端和服務(wù)器端之間的消息傳遞衅疙,我們可以使用HTTP協(xié)議請求
HTTP 協(xié)議請求主要分6種類型 (GET 和 POST 較常用)
1)GET 請求
通過URL網(wǎng)址傳遞信息犹芹,可以直接在URL中寫上要傳遞的信息聂渊,也可以由表單進行傳遞(表單中的信息會自動轉(zhuǎn)化為URL地址中的數(shù)據(jù)呆躲,通過URL地址傳遞)
備注:已經(jīng)取得資源,并將資源添加到響應(yīng)中的消息體
2)POST 請求
可以向服務(wù)器提交數(shù)據(jù)忍抽,是一種比較安全的數(shù)據(jù)傳遞方式八孝,比如在登錄時,經(jīng)常使用 POST 請求發(fā)送數(shù)據(jù)
3)PUT 請求
請求服務(wù)器存儲一個資源鸠项,通常需要制定存儲的位置
4)DELETE 請求
請求服務(wù)器刪除一個資源
5)HEAD 請求
請求獲取對應(yīng)的 HTTP 報頭信息
6)OPTIONS 請求
可以獲得當前URL所支持的請求類型
Response Code
狀態(tài)碼:200 OK
表明請求已經(jīng)成功. 默認情況下成功的請求將會被緩存
不同請求方式對于請求成功的意義如下:
GET:已經(jīng)取得資源干跛,并將資源添加到響應(yīng)中的消息體.
HEAD:作為消息體的頭部信息
POST:在消息體中描述此次請求的結(jié)果
請求成功對于PUT 和 DELETE 來說并不是200 ok 而是 204 所代表的沒有資源 (或者 201 所代表的當一個資源首次被創(chuàng)建成功
以下是常見狀態(tài)碼及含義
狀態(tài)碼 | 英文 | 中文含義 |
---|---|---|
200 | OK | 一切正常 |
301 | Moved Permanently | 重定向到新的URL,永久性 |
302 | Found | 重定向到臨時URL祟绊,非永久性 |
304 | Not Modified | 請求的資源未更新 |
400 | Bad Request | 非法請求 |
401 | Unauthorized | 請求未經(jīng)授權(quán) |
403 | Forbidden | 禁止訪問 |
404 | Not Found | 沒有找到對應(yīng)資源 |
500 | Internal Server Error | 服務(wù)器內(nèi)部出現(xiàn)錯誤 |
501 | Not Implemented | 服務(wù)器不支持實現(xiàn)請求所需要的功能 |
import urllib.request
import urllib.parse
import requests
resp = urllib.request.urlopen("http://www.baidu.com/")
html = resp.read().decode("utf-8")
print(html)
# GET
resp = urllib.request.urlopen("http://localhost:8080/sayHello?name=zhangsan")
print(resp.status)
print(resp.read().decode("UTF-8"))
# POST
data = urllib.parse.urlencode({"username": "lisi", "password":"123456"})
data = data.encode("UTF-8")
resp = urllib.request.urlopen("http://localhost:8080/login", data)
print(resp.read().decode("UTF-8"))
# 帶Header
header = {
"POSID": "1010101"
}
req = urllib.request.Request("http://localhost:8080/login", data, header)
resp = urllib.request.urlopen(req)
print(resp.read().decode("UTF-8"))
# requests
# GET
response = requests.get("http://localhost:8080/sayHello", "name=zhangsan")
print(response.status_code)
print(response.headers)
print(response.headers["Content-Type"])
print(response.encoding)
print(response.text)
# POST
# 類似jQuery
# response = requests.post("http://localhost:8080/login", {"username":"lisi","password":"123456"})
response = requests.post("http://localhost:8080/login", "username=lisi&password=123456")
if response.status_code == 200:
print(response.text)
print(response.json())
# 帶headers
url = "http://localhost:8080/login"
data = "username=lisi&password=123456"
headers = {"id":"123", "name": "abc"}
response = requests.post(url, data, headers=headers, timeout=3)
if response.status_code == 200:
print(response.text)
print(response.json())
#傳json數(shù)據(jù)
import urllib2
jsonstr='{
"rd": {
"a": "a",
"b": "b",
"c": "c",
"d": "d",
"e": "d",
"f": "f",
"g": "g",
},
"rds": [{
"rdsa": "rdsa",
"rdsb": "rdsb",
"rdsc": rdsc,
"rdsd": 1.0,
"rdse": 1.3,
}, {
"rdsa": "rdsa2",
"rdsb": "rdsb2",
"rdsc": rdsc2,
"rdsd": 1.0,
"rdse": 1.3,
}]
}'
Post_url = "http:/localhost/api/test"
Post_data = jsonstr
headers = {'Content-Type': 'application/json'}
request = urllib2.Request(Post_url, Post_data, headers)
response = urllib2.urlopen(request)
message = response.read()
r = json.loads(message)