国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python服務(wù)器端收發(fā)請求的實現(xiàn)代碼

2019-11-25 18:10:20
字體:
供稿:網(wǎng)友

最近學(xué)習(xí)了python的一些服務(wù)器端編程,記錄在此。

發(fā)送get/post請求

# coding:utf-8import httplib,urllib #加載模塊#urllib可以打開網(wǎng)站去拿#res = urllib.urlopen('http://baidu.com');#print res.headers#定義需要進行發(fā)送的數(shù)據(jù)   params = urllib.urlencode({'param':'6'});#定義一些文件頭   headers = {"Content-Type":"application/x-www-form-urlencoded",      "Connection":"Keep-Alive",'Content-length':'200'};#與網(wǎng)站構(gòu)建一個連接conn = httplib.HTTPConnection("localhost:8765");#開始進行數(shù)據(jù)提交  同時也可以使用get進行conn.request(method="POST",url="/",body=params,headers=headers);#返回處理后的數(shù)據(jù)response = conn.getresponse();print response.read()#判斷是否提交成功if response.status == 200:  print "發(fā)布成功!^_^!";else:  print "發(fā)布失敗/^0^/";#關(guān)閉連接conn.close();

利用urllib模塊可以方便的實現(xiàn)發(fā)送http請求.urllib的參考手冊

http://docs.python.org/2/library/urllib.html

建立http服務(wù)器,處理get,post請求

# coding:utf-8from BaseHTTPServer import HTTPServer,BaseHTTPRequestHandlerclass RequestHandler(BaseHTTPRequestHandler):  def _writeheaders(self):    print self.path    print self.headers    self.send_response(200);    self.send_header('Content-type','text/html');    self.end_headers()  def do_Head(self):    self._writeheaders()  def do_GET(self):    self._writeheaders()    self.wfile.write("""<!DOCTYPE HTML><html lang="en-US"><head>	<meta charset="UTF-8">	<title></title></head><body><p>this is get!</p></body></html>"""+str(self.headers))  def do_POST(self):    self._writeheaders()    length = self.headers.getheader('content-length');    nbytes = int(length)    data = self.rfile.read(nbytes)    self.wfile.write("""<!DOCTYPE HTML><html lang="en-US"><head>	<meta charset="UTF-8">	<title></title></head><body><p>this is put!</p></body></html>"""+str(self.headers)+str(self.command)+str(self.headers.dict)+data)addr = ('',8765)server = HTTPServer(addr,RequestHandler)server.serve_forever()

注意這里,python把response的消息體記錄在了rfile中。BaseHpptServer沒有實現(xiàn)do_POST方法,需要自己重寫。之后我們新建類RequestHandler,繼承自 baseHTTPServer 重寫do_POST方法,讀出rfile的內(nèi)容即可。
但是要注意,發(fā)送端必須指定content-length.若不指定,程序就會卡在rfile.read()上,不知道讀取多少。

參考手冊 http://docs.python.org/2/library/basehttpserver.html

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黔江区| 二连浩特市| 肃宁县| 灵武市| 乌兰察布市| 祥云县| 河池市| 辽阳市| 金坛市| 弋阳县| 琼海市| 米易县| 梅州市| 蕉岭县| 康平县| 正定县| 顺平县| 九寨沟县| 平邑县| 红桥区| 达州市| 乾安县| 弋阳县| 嘉禾县| 兴隆县| 五莲县| 德化县| 临沂市| 泊头市| 马龙县| 中方县| 灵璧县| 乌兰浩特市| 济宁市| 靖西县| 二连浩特市| 宝山区| 綦江县| 九寨沟县| 鄂温| 康保县|