python的get和post方式请求详解
1.使用get方式时,url类似如下格式:
[html]
index.?id=100&op=bind
get报问头如下:
[html]
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报文头如下:
[html]
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数据在http头后边有一空行,空行后边接着发送post数据在http头后边有一空行,空行后边接着发送post数据在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的编码:
[html]
search=urllib.urlencode({'q':'python'})
输出为:
[html]
'q=python'
7.ok,现在正式开始python的get和post请求:
[html]
#!/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":"https://192.168.1.212/newsadd.?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();
上一篇: mac 设置mysql开机自启动
推荐阅读
-
Python简单的get和post请求
-
python的get和post方式请求详解
-
jQuery的3种请求方式$.post,$.get,$.getJSON
-
Linux下模拟http的get/post请求(curl or wget)详解
-
python通过get,post方式发送http请求和接收http响应的方法
-
ajax请求post和get的区别以及get post的选择
-
postman的安装与使用方法(模拟Get和Post请求)
-
Python使用post及get方式提交数据的实例
-
Android发送GET与POST请求的DEMO详解
-
微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。