postpython
Ⅰ python用get还是post好
Python用post好,下面是它们的具体区别:
GET产生一个TCP数据包;POST产生两个TCP数据包。
解释:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。
因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?
1. GET与POST都有自己的语义,不能随便混用。
2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
所以从本质上来说,post比get好。
更多Python知识,请关注:Python自学网!!
Ⅱ 如何用Python写一个http post请求
python发送post和get请求
get请求:
使用get方式时,请求数据直接放在url中。
方法一、
importurllib
importurllib2
url="<ahref="http://192.168.81.16/cgi-bin/python_test/test.py?ServiceCode=aaaa""target="_blank">http://192.168.81.16/cgi-bin/python_test/test.py?ServiceCode=aaaa"</a>
req=urllib2.Request(url)
printreq
res_data=urllib2.urlopen(req)
res=res_data.read()
printres
方法二、
importhttplib
url="<ahref="http://192.168.81.16/cgi-bin/python_test/test.py?ServiceCode=aaaa""target="_blank">http://192.168.81.16/cgi-bin/python_test/test.py?ServiceCode=aaaa"</a>
conn=httplib.HTTPConnection("192.168.81.16")
conn.request(method="GET",url=url)
response=conn.getresponse()
res=response.read()
printres
post请求:
使用post方式时,数据放在data或者body中,不能放在url中,放在url中将被忽略。
方法一、
importurllib
importurllib2
test_data={'ServiceCode':'aaaa','b':'bbbbb'}
test_data_urlencode=urllib.urlencode(test_data)
requrl="<ahref="http://192.168.81.16/cgi-bin/python_test/test.py""target="_blank">http://192.168.81.16/cgi-bin/python_test/test.py"</a>
req=urllib2.Request(url=requrl,data=test_data_urlencode)
printreq
res_data=urllib2.urlopen(req)
res=res_data.read()
printres
方法二、
importurllib
importhttplib
test_data={'ServiceCode':'aaaa','b':'bbbbb'}
test_data_urlencode=urllib.urlencode(test_data)
requrl="<ahref="http://192.168.81.16/cgi-bin/python_test/test.py""target="_blank">http://192.168.81.16/cgi-bin/python_test/test.py"</a>
headerdata={"Host":"192.168.81.16"}
conn=httplib.HTTPConnection("192.168.81.16")
conn.request(method="POST",url=requrl,body=test_data_urlencode,headers=headerdata)
response=conn.getresponse()
res=response.read()
printres
Ⅲ python 关于post和get的区别
1.GET是从服务器上获取数据,POST是向服务器传送数据。
2.在客户端,GET方式在通过URL提交数据,数据在URL中可以看到,POST方式,数据放置在HTML——HEADER内提交。
3.对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用Request.Form获取提交的数据。
Ⅳ 如何在 Python 中模拟 post 表单来上传文件
在机器上安装了Python的setuptools工具,可以通过下面的命令来安装 poster:
easy_installposter
装完之后,安装下面代码就可以实现post表单上传文件了:
fromposter.encodeimportmultipart_encode
fromposter.streaminghttpimportregister_openers
importurllib2
#在urllib2上注册http流处理句柄
register_openers()
#开始对文件"DSC0001.jpg"的multiart/form-data编码
#"image1"是参数的名字,一般通过HTML中的<input>标签的name参数设置
#headers包含必须的Content-Type和Content-Length
#datagen是一个生成器对象,返回编码过后的参数
datagen,headers=multipart_encode({"image1":open("DSC0001.jpg","rb")})
#创建请求对象(localhost服务器IP地址,5000服务器端口)
request=urllib2.Request("http://localhost:5000/upload_image",datagen,headers)
#实际执行请求并取得返回
printurllib2.urlopen(request).read()
Ⅳ python怎么发送post请求
我使用的的python3.5,代码如下:
fromurllib.parseimporturlencode
fromurllib.requestimporturlopen
defsend_to_server(url,post_data=None):
ifpost_data:
para=urlencode(post_data)
page=urlopen(url,para.encode('utf-8'))#注意这里不encode会报错
else:
page=urlopen(url)
return(page.read().decode('utf-8'))
Ⅵ python 提交post数据求助
这又不知道你的defput_tickets(item_id,username,password,oid,tickets,active函数里面的参数到底是怎么样子的
你把
try:
return_put_tickets(item_id,username,password,oid,tickets,active)
exceptException:
printu'提交错误,重试中....测试版'
这个加个print语句
try:
return_put_tickets(item_id,username,password,oid,tickets,active)
exceptException,e:
printe#这里会打印异常原因
printu'提交错误,重试中....测试版'
或者直接把tryexcept去掉看看报错信息