python服務(wù)器端收發(fā)請(qǐng)求的實(shí)現(xiàn)代碼
最近學(xué)習(xí)了python的一些服務(wù)器端編程,記錄在此。
發(fā)送get/post請(qǐng)求
# coding:utf-8
import httplib,urllib #加載模塊
#urllib可以打開網(wǎng)站去拿
#res = urllib.urlopen('http://baidu.com');
#print res.headers
#定義需要進(jìn)行發(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)建一個(gè)連接
conn = httplib.HTTPConnection("localhost:8765");
#開始進(jìn)行數(shù)據(jù)提交 同時(shí)也可以使用get進(jìn)行
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模塊可以方便的實(shí)現(xiàn)發(fā)送http請(qǐng)求.urllib的參考手冊
http://docs.python.org/2/library/urllib.html
建立http服務(wù)器,處理get,post請(qǐng)求
# coding:utf-8
from BaseHTTPServer import HTTPServer,BaseHTTPRequestHandler
class 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沒有實(shí)現(xiàn)do_POST方法,需要自己重寫。之后我們新建類RequestHandler,繼承自 baseHTTPServer 重寫do_POST方法,讀出rfile的內(nèi)容即可。
但是要注意,發(fā)送端必須指定content-length.若不指定,程序就會(huì)卡在rfile.read()上,不知道讀取多少。
參考手冊 http://docs.python.org/2/library/basehttpserver.html
- python實(shí)現(xiàn)的文件同步服務(wù)器實(shí)例
- python實(shí)現(xiàn)從ftp服務(wù)器下載文件的方法
- Python實(shí)現(xiàn)的簡單文件傳輸服務(wù)器和客戶端
- python連接遠(yuǎn)程ftp服務(wù)器并列出目錄下文件的方法
- python實(shí)現(xiàn)獲取客戶機(jī)上指定文件并傳輸?shù)椒?wù)器的方法
- 使用nodejs、Python寫的一個(gè)簡易HTTP靜態(tài)文件服務(wù)器
- python 從遠(yuǎn)程服務(wù)器下載日志文件的程序
- Python壓縮和解壓縮zip文件
- Python壓縮解壓縮zip文件及破解zip文件密碼的方法
- Python實(shí)現(xiàn)向服務(wù)器請(qǐng)求壓縮數(shù)據(jù)及解壓縮數(shù)據(jù)的方法示例
相關(guān)文章
python使用for循環(huán)計(jì)算0-100的整數(shù)的和方法
今天小編就為大家分享一篇python使用for循環(huán)計(jì)算0-100的整數(shù)的和方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02
解決pycharm無法識(shí)別本地site-packages的問題
今天小編就為大家分享一篇解決pycharm無法識(shí)別本地site-packages的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10
詳解Python+OpenCV實(shí)現(xiàn)圖像二值化
圖像二值化就是將圖像上的像素點(diǎn)的灰度值設(shè)置為0或255,也就是將整個(gè)圖像呈現(xiàn)出明顯的黑白效果的過程。本文將通過Python+OpenCV實(shí)現(xiàn)這一過程,感興趣的可以學(xué)習(xí)一下2022-05-05
關(guān)于pip的安裝,更新,卸載模塊以及使用方法(詳解)
下面小編就為大家?guī)硪黄P(guān)于pip的安裝,更新,卸載模塊以及使用方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
Python multiprocessing模塊中的Pipe管道使用實(shí)例
這篇文章主要介紹了Python multiprocessing模塊中的Pipe管道使用實(shí)例,本文直接給出使用實(shí)例,需要的朋友可以參考下2015-04-04
python excel使用xlutils類庫實(shí)現(xiàn)追加寫功能的方法
今天小編就為大家?guī)硪黄猵ython excel使用xlutils類庫實(shí)現(xiàn)追加寫功能的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Python數(shù)據(jù)分析?Numpy?的使用方法
這篇文章主要介紹了Python數(shù)據(jù)分析?Numpy?的使用方法,Numpy?是一個(gè)Python擴(kuò)展庫,專門做科學(xué)計(jì)算,也是大部分Python科學(xué)計(jì)算庫的基礎(chǔ),關(guān)于其的使用方法,需要的小伙伴可以參考下面文章內(nèi)容2022-05-05

