访问网站最常用的一种方式是GET方法。
这种方式主要用于客户端从服务器获取网站数据,如果有交互,客户端把参数附加在网址的后面向服务器提供参数,服务器接收这些参数后作不同的响应。
1.客户端GET方式发送数据
GET方式发送使得数据附加在URL后面,在URL后面先接一个"?"号,数据采用”名称1=值1&名称2=值2……“的方式,多个数据之间用”&“符号隔开。
例如,向服务器传递省份和城市的数据就可以这样写:
urllib.request.urlopen("http://127.0.0.1:5000?province=GD&city=SZ")
如果参数包含汉字,那么必须使用urllib.parse.quote对参数值进行编码。例如:
province=urllib.parse.quote("广东")
city=urllib.parse.quote("深圳")
urllib.request.urlopen("http://127.0.0.1:5000?+province="+province+"&city="+city)
客户端程序client.py如下:
# 客户端Get方式发送数据
import urllib.parse
import urllib.request
url = "http://127.0.0.1:5000"
try:
province = urllib.parse.quote("广东")
city = urllib.parse.quote("深圳")
data = "province="+province+"&city="+city
html = urllib.request.urlopen("http://127.0.0.1:5000?"+data)
html = html.read()
html = html.decode()
print(html)
except Exception as err:
print(err)
2.服务器获取GET发送的数据
服务器用Flask中的request对象的args来存储GET的参数,用get方法来获取参数,即用flask.request.args.get(参数)来获取参数的值。例如:如下...就可以获取GET传递的参数province与city的值。
province=flask.request.args.get("province")
city=flask.request.args.age("city")
服务器程序server.py如下:
# 服务器获取GET发送的数据
importflask
app=flask.Flask(__name__)
@app.route("/")
defindex():
try:
province=flask.request.args.get("province")
city=flask.request.args.get("city")
returnprovince+","+city
exceptExceptionaserr:
returnstr(err)
if__name__=="__main__":
app.run()
先运行server.py建立Web网站,再运行client.py,可以看到client.py的运行结果:
注意:Web网址是http://127.0.0.1:5000,如果直接访问这个网站会出现错误:
因为没有提供province与city参数。服务器执行:
province=flask.request.args.get("province")
city=flask.request.args.get("city")
这时会到args中查找province和city的参数的值,结果因没有找到而出现错误。
为了避免这种错误,可与改写为:
这样,在“province”和“city”没有出现在flask.reauest.args中时,province、city值就设置为空字符串。
服务器程序该进如下:
# 服务器获取GET发送的数据
importflask
app=flask.Flask(__name__)
@app.route("/")
defindex():
try:
province=flask.request.args.get("province") if"province"inflask.request.argselse""
city=flask.request.args.get("city") if"city"inflask.request.argselse""
returnprovince+","+city
exceptExceptionaserr:
returnstr(err)
if__name__=="__main__":
app.run()
下一篇文章:1.4 POST 方法向网站发送数据