香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

python服务器端收发请求的实现代码


时间:2021-11-09 10:24 作者:admin610456


最近学习了python/' target='_blank'>python的一些服务器端编程,记录在此。

发送get/post请求

# coding:utf-8import httplib,urllib #加载模块#urllib可以打开网站去拿#res = urllib.urlopen('http://baidu.com');#print res.headers#定义需要进行发送的数据   params = urllib.urlencode({'param':'6'});#定义一些文件头   headers = {"Content-Type":"application/x-www-form-urlencoded",      "Connection":"Keep-Alive",'Content-length':'200'};#与网站构建一个连接conn = httplib.HTTPConnection("localhost:8765");#开始进行数据提交  同时也可以使用get进行conn.request(method="POST",url="/",body=params,headers=headers);#返回处理后的数据response = conn.getresponse();print response.read()#判断是否提交成功if response.status == 200:  print "发布成功!^_^!";else:  print "发布失败\^0^/";#关闭连接conn.close();

利用urllib模块可以方便的实现发送http请求.urllib的参考手册

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

建立http服务器,处理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没有实现do_POST方法,需要自己重写。之后我们新建类RequestHandler,继承自 baseHTTPServer 重写do_POST方法,读出rfile的内容即可。
但是要注意,发送端必须指定content-length.若不指定,程序就会卡在rfile.read()上,不知道读取多少。

参考手册 http://docs.python.org/2/library/basehttpserver.html

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)