Python 实现HTTP Server比较简单。下面的代码是一种方式。
实现HTTP Client,可以考虑使用requests组件,很好用。http://docs.python-requests.org/en/latest/
#!/usr/bin/python
#coding:utf-8
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
import urllib
import json
import sys
import io
import shutil
reload(sys)
#sys.setdefaultencoding('utf8')
#sys.setdefaultencoding('gb18030')
sys.setdefaultencoding('gbk')
success_message={}
success_message['response'] = {"is_success":"true"}
success_message_body= json.dumps(success_message, encoding='gbk', ensure_ascii=False).encode('gbk')
failure_message={}
failure_message["response"]={"is_success":"false","err_code":"400","err_msg":"类型不能为空".encode("gbk")}
failure_message_body= json.dumps(failure_message, encoding='gbk', ensure_ascii=False).encode('gbk')
class MyRequestHandler(BaseHTTPRequestHandler):
def do_process(self,c):
content=""
#指定返回编码
enc='gbk'
#enc='gb18030'
content=failure_message_body
f=io.BytesIO()
f.write(content)
f.seek(0)
self.send_response(200)
self.send_header("Content-type","application/json;charset=%s" % enc)
self.send_header("Content-Length",str(len(content)))
self.end_headers()
shutil.copyfileobj(f,self.wfile)
def do_GET(self):
print 'GET request received'
self.do_process("get")
def do_POST(self):
print 'POST request received'
self.do_process("post")
if __name__ == '__main__':
PORT = 2000
print "serving at port", PORT
print 'Starting server, use <Ctrl-C> to stop'
server = HTTPServer(("", PORT), MyRequestHandler)
server.serve_forever()