加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

如何使用python发送post请求

(2012-10-25 10:48:22)
标签:

python

post

cookiejar

需要登录信息

it

分类: python

在进行接口测试的时候,有些需要发送post请求。先了解一些基本概念。

1.Http请求

HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST

2. GetPost的主要区别

1   在客户端,Get方式通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。

2   GET方式提交的数据最多只能有1024字节,而POST则没有此限制

3.如何使用python发送post请求

一般步骤:

  • 了解请求的url和参数
  • 使用urlencode对参数进行url编码
  • 生成Request对象
  • Open 这个Request对象

举例:

 

        org_name = "henry_test"
        org_psw = "XXXXX"
        login_url = "http://passport.ablesky-a.com:8080/passport/login.do"#请求的url
        para = {
            'j_username':org_name,
            'j_password':org_psw,
            }#参数为用户名和密码
        post_data = urllib.urlencode(para)#进行url编码
        req = urllib2.Request(login_url,post_data)#生成Request对象
        resp = urllib2.urlopen(req)#open it
        file=resp.read()#读出返回结果
        print file #打印出返回结果

4.可能会遇到的问题 
1.返回结果{"message":"Referer is null ","success":false}
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。
解决:手动添加referer,在open这个request前,将referer加入header中

       req.add_header('Referer','http://www.ablesky-a.com:8080/')

2.有些请求需要登录信息怎么办?

解决方式:使用CookieJar()来自动管理Cookie

    cj = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
   
    org_name = "henry_test"
    org_pwd = "xxxxxx"
    login_url = "
http://passport.ablesky-a.com:8080/passport/login.do"
    para = {
            'j_username':org_name,
            'j_password':org_pwd,
            }
    post_para = urllib.urlencode(para)
    opener.addheaders = [('Referer', 'http://www.ablesky-a.com:8080/')]
    resp = opener.open(login_url, post_para)
    file = resp.read()
  方式和第一种基本相同,就是使用了一个opener,用它发了登录的请求后,cookie信息会自动保存,所以之后需要登录信息才能发的请求只要直接用这个openner open就可以了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有