Python Internet
来源:互联网 发布:maven java web项目 编辑:程序博客网 时间:2024/06/18 11:29
今天的进度更新到《python标准库》的第十二章 Internet。
初读之下,略感陌生,拿起了之前只读了1/3的《自顶向下方法》复习起来,结合之前的Tcp/Udp的一些小demo之后,感觉理解和思考更进了一个层次,之前很多掠过一眼的东西,现在能引起我的思考。愿一步一个脚印。
今天主要打了HTTP中 GET和POST两大方法的实现。虽然书中给出的报文似乎不是很标准,但是对其实现有了更进一步的思考。
基于BaseHTTPServer
这个库,实现关于自己的GET POST等方法。下面附上代码
from BaseHTTPServer import BaseHTTPRequestHandlerimport cgiclass PostHandler(BaseHTTPRequestHandler): def do_POST(self): form = cgi.FieldStorage( fp=self.rfile, headers=self.headers, environ={'REQUEST_METHOD':'POST', 'CONTENT_TYPE':self.headers['Content-type'] } ) self.send_response(200) self.end_headers() self.wfile.write('Client:%s\n'%str(self.client_address)) self.wfile.write('User-agent:%s\n'% str(self.headers['user-agent'])) self.wfile.write('Path:%s\n'%self.path) self.wfile.write('From data:\n') for field in form.keys(): field_item = form[field] if field_item.filename: file_data = field_item.file.read() file_len = len(file_data) del file_data self.wfile.write( '\tUpload %s as "%s"(%d bytes)\n'%\ (field , field_item.filename,file_len) ) else: self.wfile.write('\t%s=%s\n'% (field,form[field].value)) returnif __name__ == '__main__': from BaseHTTPServer import HTTPServer server = HTTPServer(('localhost',8080),PostHandler) server.serve_forever()
这是POST方法实现
from BaseHTTPServer import BaseHTTPRequestHandlerimport urlparseclass GetHandler(BaseHTTPRequestHandler): def do_GET(self): parsed_path = urlparse.urlparse(self.path) message_parts = [ 'CLIENT VALUES:', 'client_address = %s (%s)'%(self.client_address, self.address_string()), 'command=%s'%self.command, 'path=%s',self.path, 'real path=%s'%parsed_path.path, 'query=%s'%parsed_path.query, 'request_version=%s'%self.request_version, '', 'SERVER VALUES:', 'server_version=%s'%self.server_version, 'sys_version=%s'%self.sys_version, 'protocol_version=%s'%self.protocol_version, '', 'HEADERS RECEIVED:' ] for name,value in sorted(self.headers.items()): message_parts.append('%s=%s'%(name,value.rstrip())) message_parts.append('') message = '\r\n'.join(message_parts) self.send_response(200) self.end_headers() self.wfile.write(message) returnif __name__ =='__main__': from BaseHTTPServer import HTTPServer server = HTTPServer(('localhost',8080),GetHandler) server.serve_forever()
这是GET方法实现
里面还有一些不懂的地方,明日再战吧。
0 0
- Python Internet
- Internet
- Internet
- Internet
- Internet
- internet
- urllib2 - The Missing Manual HOWTO Fetch Internet Resources with Python
- python网络编程经典好文,如何用urllib获取internet资源,HOWTO Fetch Internet Resources Using The urllib Package
- Python Selenium 调用浏览器失败Unexpected error launching Internet Explorer解决方法
- Internet Browser
- Pause internet
- Internet Utilities
- Internet Basics
- Internet实用工具
- from:internet
- Access Internet
- internet与
- internet time
- 1035. 插入与归并(25) PAT乙级&&1089. Insert or Merge (25)PAT甲级
- react中使用echarts
- jquery ajax分页写法
- 日志那点事儿——slf4j源码剖析
- 数据库连接代码
- Python Internet
- php 常用的方法
- ES6/ES2015核心内容理解
- string和wstring互转、全角半角互转
- Mac如何在终端玩游戏
- python类方法,实例方法,静态方法的区别
- qsort()函数使用
- 初学Spring MVC , 配置
- Django开发D3.js展示页面时IE浏览器d3 is undefined error问题的解决