设为首页 收藏本站
查看: 595|回复: 0

[经验分享] python的get和post方式请求详解

[复制链接]

尚未签到

发表于 2017-5-5 11:13:18 | 显示全部楼层 |阅读模式
来自:http://blog.csdn.net/jianhong1990/article/details/8090204
 1.使用get方式时,url类似如下格式:

index.jsp?id=100&op=bind
 GET报问头如下:

GET /sn/index.php?sn=123&n=asa HTTP/1.1
Accept: */*
Accept-Language: zh-cn
host: localhost

Content-Type: application/x-www-form-urlencoded
Content-Length: 12
Connection:close
 
  2.使用post方式时,POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,可用来传送文件。
  POST报文头如下:

POST /sn/index.php HTTP/1.1
Accept: */*
Accept-Language: zh-cn
host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: 12
Connection:close
sn=123&n=asa
  在http头后边有一空行,空行后边接着发送post数据。空行通知服务器以下不再有请求头。
  3.可以发现的一点是,无论是post还是get方式,他们所传递的数据都要进行url编码
  4. url编码是一种浏览器用来打包表单输入的格式。
  浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器
  不管哪种情况,在服务器端的表单输入格式样子象这样:

 
  theName=Ichabod+Crane&gender=male&status=missing& ;headless=yes
  5.URL编码遵循下列规则:
  1.每对name/value由&;符分开;
  2.每对来自表单的name/value由=符分开。
  3.如果用户没有输入值给这个name,那么这个name还是出现,只是无值。
  4.任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码
  6.所以,当我们使用get或者post传送数据之前,我们都需要对数据进行url编码。
  urllib库提供了一个函数来实现url的编码:

search=urllib.urlencode({'q':'python'})
  输出为:

'q=python'
  7.ok,现在正式开始python的get和post请求:

#!/usr/bin/python   
#-*-coding:utf-8-*-   
# 进行表单提交  小项  2008-10-09   
import httplib,urllib;  #加载模块   
#定义需要进行发送的数据   
params = urllib.urlencode({'cat_id':'6',     
'news_title':'标题-Test39875',     
'news_author':'Mobedu',     
'news_ahome':'来源',     
'tjuser':'carchanging',     
'news_keyword':'|',     
'news_content':'测试-Content',     
'action':'newnew',     
'MM_insert':'true'});     
#定义一些文件头   
headers = {"Content-Type":"application/x-www-form-urlencoded",     
"Connection":"Keep-Alive","Referer":"http://192.168.1.212/newsadd.asp?action=newnew"};     
#与网站构建一个连接   
conn = httplib.HTTPConnection("192.168.1.212");     
#开始进行数据提交   同时也可以使用get进行   
conn.request(method="POST",url="/newsadd.asp?action=newnew",body=params,headers=headers);     
#返回处理后的数据   
response = conn.getresponse();     
#判断是否提交成功   
if response.status == 302:     
print "发布成功!^_^!";     
else:     
print "发布失败\^0^/";     
#关闭连接   
conn.close();

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-373397-1-1.html 上篇帖子: 利用python的线程检测实现观察者模式 下篇帖子: python魔法方法、属性和迭代器(1)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表