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

  1. &op=bind  

GET报问头例如以下:

  1. &n=asa HTTP/1.1  
  2.  Accept: */*  
  3.  Accept-Language: zh-cn  
  4.  host: localhost  
  5.    
  6.   
  7.  Content-Type: application/x-www-form-urlencoded  
  8.  Content-Length: 12  
  9.  Connection:close  

 

2.使用post方式时。POST方法将请求參数封装在HTTP请求数据中,以名称/值的形式出现,能够传输大量数据,可用来传送文件。

POST报文头例如以下:

  1. POST /sn/index.php HTTP/1.1  
  2. Accept: */*  
  3. Accept-Language: zh-cn  
  4. host: localhost  
  5.   
  6. Content-Type: application/x-www-form-urlencoded  
  7. Content-Length: 12  
  8. Connection:close  
  9. &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的编码:

  1. search=urllib.urlencode({'q':'python'})  

输出为:

  1. 'q=python'  

 

7.ok,如今正式開始python的get和post请求:

  1. #!/usr/bin/python      
  2. #-*-coding:utf-8-*-      
  3.        
  4. # 进行表单提交  小项  2008-10-09      
  5.        
  6. import httplib,urllib;  #载入模块      
  7.        
  8. #定义须要进行发送的数据      
  9. params = urllib.urlencode({'cat_id':'6',       
  10.                            'news_title':'标题-Test39875',       
  11.                            'news_author':'Mobedu',       
  12.                            'news_ahome':'来源',       
  13.                            'tjuser':'carchanging',       
  14.                            'news_keyword':'|',       
  15.                            'news_content':'測试-Content',       
  16.                            'action':'newnew',       
  17.                            'MM_insert':'true'});       
  18. #定义一些文件头      
  19. headers = {"Content-Type":"application/x-www-form-urlencoded",       
  20.            "Connection":"Keep-Alive","Referer":"http://192.168.1.212/newsadd.asp?

    action=newnew"};       

  21. #与站点构建一个连接      
  22. conn = httplib.HTTPConnection("192.168.1.212");       
  23. #開始进行数据提交   同一时候也能够使用get进行      
  24. conn.request(method="POST",url="/newsadd.asp?

    action=newnew",body=params,headers=headers);       

  25. #返回处理后的数据      
  26. response = conn.getresponse();       
  27. #推断是否提交成功      
  28. if response.status == 302:       
  29.     print "公布成功!^_^!";       
  30. else:       
  31.     print "公布失败\^0^/";       
  32. #关闭连接      
  33. 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()

python get post模拟请求的更多相关文章

  1. 测试开发Python培训:模拟登录新浪微博-技术篇

    测试开发Python培训:模拟登录新浪微博-技术篇   一般一个初学者项目的起点就是登陆功能的自动化,而面临的项目不同实现的技术难度是不一样的,poptest在做测试开发培训中更加关注技术难点,掌握技 ...

  2. Python爬虫之模拟登录微信wechat

    不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一起.既然它这么重要,如果我们可以利用爬虫模拟登录,是不是就意味着我们可以获取这些信息 ...

  3. Python实现网站模拟登陆

    一.实验简介 1.1 基本介绍 本实验中我们将通过分析登陆流程并使用 Python 实现模拟登陆到一个实验提供的网站,在实验过程中将学习并实践 Python 的网络编程,Python 实现模拟登陆的方 ...

  4. Python爬虫--- 1.1请求库的安装与使用

    来说先说爬虫的原理:爬虫本质上是模拟人浏览信息的过程,只不过他通过计算机来达到快速抓取筛选信息的目的所以我们想要写一个爬虫,最基本的就是要将我们需要抓取信息的网页原原本本的抓取下来.这个时候就要用到请 ...

  5. Python使用selenium模拟点击(一)

    本文适合有点Python基础阅读,(没基础的话,相对的比较蒙蔽,争取能让小白能一步一步跟上来) 2019-03-05 14:53:05 前几天由于需要到一个网站进行签到~~听说Python能够模拟请求 ...

  6. Python+requests 发送简单请求--》获取响应状态--》获取请求响应数据

    Python+requests 发送简单请求-->获取响应状态-->获取请求响应数据 1.环境:安装了Python和vscode编译器(Python自带的编译器也ok).fiddler抓包 ...

  7. Python爬虫-百度模拟登录(二)

    上一篇-Python爬虫-百度模拟登录(一) 接上一篇的继续 参数 codestring codestring jxG9506c1811b44e2fd0220153643013f7e6b1898075 ...

  8. http国际化模拟请求

    现在好多系统都有国际化的需求.不同国家的人读到不同的语言数据.那么怎么模拟请求的时候区分是哪个国家的语言信息,代码说明. HttpPost methed = new HttpPost("模拟 ...

  9. http模拟请求工具

    http模拟请求工具: postman(chrome应用) Request Maker(chrome插件) Request Maker(网站:http://www.requestmaker.com/) ...

随机推荐

  1. Spring中使用集成MongoDB Client启动时报错:rc: 48

    一定是所在的服务器也装了MongoDB导致端口冲突,解决方法:kill掉全部MongoDB的进程. ps aux | grep mongod PID 参考: http://blog.csdn.net/ ...

  2. 屏蔽国内广告的hosts

    源码:https://github.com/easonjim/blackhosts bug提交:https://github.com/easonjim/blackhosts/issues

  3. webservice测试窗体只能用于来自本地计算机的请求

    写在前面 在编写好webservice后,发布到iis服务器,你会发现会有这样的异常“测试窗体只能用于来自本地计算机的请求”. 解决方案 在web.config中添加以下代码即可解决问题 <we ...

  4. 多线程一共就俩问题:1.线程安全(访问共享数据) 2.线程通信(wait(),notify())

    多线程一共就俩问题:1.线程安全(访问共享数据) 2.线程通信(wait(),notify()) 1.线程安全,无非就是加锁,访问共享资源时,synchronized 2.线程通信,就是控制各个线程之 ...

  5. mac 安装 mysql-python

    1 首先安装mysql 要那种纯净,独立的mysql,不是xampp里附带的 2 下载 mysql-python压缩包,解压,找到里面的site.cfg里的 mysql_config = /usr/l ...

  6. 14.【nuxt起步】-Pm2 和nuxt服务运行

    1.安装pm2 npm install pm2 -gd 2.启动 Pm2 start ./bin/www 3. pm2 save 4.Pm2 startup 5.Pm2 save修改 package. ...

  7. nohup 输出重定向

    今天在使用nohup命令的时候,每次后台执行生成的日志文件名都为nohup.out,现需要改变nohup命令生成的文件名. 在shell中,文件描述符通常是:STDIN标准输入,STDOUT标准输出, ...

  8. 2017.2.13 开涛shiro教程-第十二章-与Spring集成(二)shiro权限注解

    原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第十二章-与Spring集成(二)shiro权限注解 shiro注 ...

  9. 【秀优越(xie e)】原来出题也能够这么恶心。

    通过邪恶的数据范围和数据限制居然能够把一道传统题出成题答2333. 诶毕竟内部互測,题目就不往上贴了. 特殊限制 - - - 题目作废.输出M行"Orz  PoPoQQQ" - M ...

  10. codeforces 486C Palindrome Transformation 贪心求构造回文

    点击打开链接 C. Palindrome Transformation time limit per test 1 second memory limit per test 256 megabytes ...