Python Http 请求

Python Http 请求,第1张

如果要进行客户端和服务器端之间的消息传递,我们可以使用HTTP协议请求

通过URL网址传递信息,可以直接在URL中写上要传递的信息,也可以由表单进行传递(表单中的信息会自动转化为URL地址中的数据,通过URL地址传递)

备注:已经取得资源,并将资源添加到响应中的消息体

可以向服务器提交数据,是一种比较安全的数据传递方式,比如在登录时,经常使用 POST 请求发送数据

请求服务器存储一个资源,通常需要制定存储的位置

请求服务器删除一个资源

请求获取对应的 HTTP 报头信息

可以获得当前URL所支持的请求类型

状态码:200 OK

表明请求已经成功. 默认情况下成功的请求将会被缓存

不同请求方式对于请求成功的意义如下:

GET:已经取得资源,并将资源添加到响应中的消息体.

HEAD:作为消息体的头部信息

POST:在消息体中描述此次请求的结果

请求成功对于PUT 和 DELETE 来说并不是200 ok 而是 204 所代表的没有资源 (或者 201 所代表的当一个资源首次被创建成功

以下是常见状态码及含义

可以使用python做HTTP服务器,然后就可以传文件

首先确保装了Python,Python内置了一个简单的HTTP服务器,只需要在命令行下面敲一行命令,一个HTTP服务器就起来了:

python -m SimpleHTTPServer 80

后面的80端口是可选的,不填会采用缺省端口8000。注意,这会将当前所在的文件夹设置为默认的Web目录,试着在浏览器敲入本机地址:

http://localhost:80

如果当前文件夹有index.html文件,会默认显示该文件,否则,会以文件列表的形式显示目录下所有文件。这样已经实现了最基本的文件分享的目的,你可以做成一个脚本,再建立一个快捷方式,就可以很方便的启动文件分享了。如果有更多需求,完全可以根据自己需要定制,具体的请参见官方文档SimpleHTTPServer,或者直接看源码。我拷贝一段,方便参考:

import SimpleHTTPServer

import SocketServer

PORT = 8000

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT

httpd.serve_forever()

首先,标准HTTP协议对上传文件等表单的定义在这里:wwwietforg/rfc/rfc1867txt 大概数据包格式如下:

单文件:

Content-type: multipart/form-data, boundary=AaB03x

--AaB03x

content-disposition: form-dataname="field1"

Joe Blow

--AaB03x

content-disposition: form-dataname="pics"filename="file1.txt"

Content-Type: text/plain

... contents of file1.txt ...

--AaB03x--

多文件:

Content-type: multipart/form-data, boundary=AaB03x

--AaB03x

content-disposition: form-dataname="field1"

Joe Blow

--AaB03x

content-disposition: form-dataname="pics"

Content-type: multipart/mixed, boundary=BbC04y

--BbC04y

Content-disposition: attachmentfilename="file1.txt"

其次,python上传文件的几种方法:

1 自己封装HTTP的POST数据包:http//stackoverflowcom/questions/680305/using-multipartposthandler-to-post-form-data-with-python

import httplibimport mimetypesdef post_multipart(host, selector, fields, files): content_type, body = encode_multipart_formdata(fields, files) h = httplib.HTTP(host) h.putrequest('POST', selector) h.putheader('content-type', content_type) h.putheader('content-length', str(len(body))) h.endheaders() h.send(body) errcode, errmsg, headers = h.getreply() return h.file.read() def encode_multipart_formdata(fields, files): LIMIT = '----------lImIt_of_THE_fIle_eW_$' CRLF = '\r\n' L = [] for (key, value) in fields: L.append('--' + LIMIT) L.append('Content-Disposition: form-dataname="%s"' % key) L.append('') L.append(value) for (key, filename, value) in files:


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/110847.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-11
下一篇2023-03-11

发表评论

登录后才能评论

评论列表(0条)

    保存