pythongetpost_python get post模拟请求

这篇博客详细介绍了HTTP的GET和POST请求的区别。GET请求通常用于获取资源,其参数显示在URL中;POST请求则可以携带大量数据,常用于表单提交。在发送请求前,数据需要进行URL编码,Python的urllib库提供了urlencode函数进行编码。示例代码展示了如何使用httplib和urllib进行Python的GET和POST请求。
摘要由CSDN通过智能技术生成

1.使用get方式时。url相似例如以下格式:

index.jsp?

id=100&op=bind

GET报问头例如以下:

GET /sn/index.php?

sn=123&n=asaHTTP/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();

另外通过urllib2

url=/game/user/info?id=28

full_url='http://192.168.1.250'+url.

data=urllib2.urlopen(full_url)

Data=data.read()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值