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数据。空行通知server下面不再有请求头。
3.能够发现的一点是,不管是post还是get方式,他们所传递的数据都要进行url编码
4. url编码是一种浏览器用来打包表单输入的格式。
浏览器从表单中获取全部的name和当中的值 ,将它们以name/value參数编码(移去那些不能传送的字符。将数据排行等等)作为URL的一部分或者分离地发给server。
不管哪种情况,在server端的表单输入格式样子象这样:
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();
url=/game/user/info?id=28
full_url='http://192.168.1.250'+url.
data=urllib2.urlopen(full_url)
Data=data.read()