curl perl python get请求带请求头

摘要:
curlget请求带请求头:curl-H"Authorization:Token9ec341da308a60047b72f9766b5b98d0d819562c"-H'Accept:application/json;indent=4'http://http://192.168.137.1:8000/api2/accounts/-H/--header(HTTP)额外的header来使
curl get请求带请求头:
curl -H "Authorization: Token 9ec341da308a60047b72f9766b5b98d0d819562c" -H 'Accept: application/json; indent=4' http://http://192.168.137.1:8000/api2/accounts/

  -H/--header <header>

 (HTTP) 额外的header 来使用当getting一个web page.你可以指定任意数量的额外的headers.

  注意如果你增加一个自定义的header,和内部有相同的名字,你外部设置header会代替内部internal.
node2:/root#curl -H "Authorization: Token 9ec341da308a60047b72f9766b5b98d0d819562c" -H 'Accept: application/json; indent=4' http://192.168.137.1:8000/api2/accounts/
[
    {
        "source": "DB",
        "email": "015208@zjtlcb.com"
    },
    {
        "source": "DB",
        "email": "99999@zjtlcb.com"
    },
    {
        "source": "DB",
        "email": "zhaoyangjian@gmail.com"
    },
    {
        "source": "DB",
        "email": "zhangzhong@gmail.com"
    },
    {
        "source": "DB",
        "email": "zhouhaiwu@gmail.com"
    }
]node2:/root#

perl 模拟get发送请求头


use  LWP::UserAgent; 
use LWP;
use Encode;
use LWP::Simple;
use LWP::UserAgent;
use HTTP::Cookies;
use HTTP::Headers;
use HTTP::Response;
use Encode;
use URI::Escape;
use URI::URL;
use JSON;
use Data::Dumper;
  my $ua = LWP::UserAgent->new;
  $ua->agent("Mozilla/5.0 (Windows NT 6.1; rv:30.0) Gecko/20100101 Firefox/30.0");
  my $cookie_jar = HTTP::Cookies->new(
     file=>'lwp_cookies.txt',
     autosave=>1,
     ignore_discard=>1);
     $ua->cookie_jar($cookie_jar);
   my $token_url= 'http://127.0.0.1:8000/api2/auth-token/';
                
  
   my $res = $ua->post($token_url,
                {
                'username'=>'015208@zjtlcb.com',
                'password'=>'1234567'
                });
   print $res->content();
   print "
";
   my $r= $res->content();
   my $r=encode_utf8($r);
   my $hash = decode_json($r);
   my $token =$hash->{"token"};
   print "$r is $r
";
   my $host = "http://127.0.0.1:8000/api2/auth/ping/";
   @header = (  
    'accept'=> "application/json",  
    'content-type'=> "application/json",  
    'Authorization'=> "Token $token" 
    );  
    
    $host="http://127.0.0.1:8000/api2/accounts/";  
    $request = HTTP::Request->new(GET=>"$host");  
    $request->header(@header);  
  
    $response = $ua->request($request);   
    print $response->decoded_content;  
 
    my $r=$response->decoded_content;
	my $r=encode_utf8($r);
    my $arr = decode_json($r);
	print "---------------------------
";
	foreach $a (@{$arr}){
	  print $a->{"email"};
	  print "
";
	  };

C:UsersTLCBDesktoppythonPython 高级编程4>perl a2.pl
{"token": "9ec341da308a60047b72f9766b5b98d0d819562c"}
$r is {"token": "9ec341da308a60047b72f9766b5b98d0d819562c"}
[{"source": "DB", "email": "015208@zjtlcb.com"}, {"source": "DB", "email": "9999
9@zjtlcb.com"}, {"source": "DB", "email": "zhaoyangjian@gmail.com"}, {"source":
"DB", "email": "zhangzhong@gmail.com"}, {"source": "DB", "email": "zhouhaiwu@gma
il.com"}]---------------------------
015208@zjtlcb.com
99999@zjtlcb.com
zhaoyangjian@gmail.com
zhangzhong@gmail.com
zhouhaiwu@gmail.com


python 模拟get 发送自定义请求头
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2
import urllib
import cookielib
import json
import httplib


def gettoken():
     data = {'username': '99999@zjtlcb.com', 'password': '1234567'}
     post_data = urllib.urlencode(data)  # 将post消息化成可以让服务器编码的方式
     cj = cookielib.CookieJar()  # 获取cookiejar实例
     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
     # 自己设置User-Agent(可用于伪造获取,防止某些网站防ip注入)
     headers = {}
     website = "http://127.0.0.1:8000/api2/auth-token/"
     req = urllib2.Request(website, post_data, headers)
     content = opener.open(req)
     s = content.read()  # linux下没有gbk编码,只有utf-8编码
     print s
     print type(s)
     text = json.loads(s)
     print type(text)
     print text['token']
     token = text['token']
     return token


def list_account():
    token = gettoken()
    print len(token)
    token = 'Token' + ' ' + token
    print token
    url = 'http://127.0.0.1:8000/api2/accounts/'
    conn = httplib.HTTPConnection('127.0.0.1', 8000)
    headers = {"Authorization": token, "Accept": "application/json; indent=10", "content-type": "application/json"}
    print headers
    conn.request('GET', url, '', headers)
    response = conn.getresponse()
    res = response.read()
    print res
list_account()

C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/Django/a4.py
{"token": "0ac9e8585ef6ae51eb62c785d10a6c5102de3ff7"}
<type 'str'>
<type 'dict'>
0ac9e8585ef6ae51eb62c785d10a6c5102de3ff7
40
Token 0ac9e8585ef6ae51eb62c785d10a6c5102de3ff7
{'content-type': 'application/json', 'Accept': 'application/json; indent=10', 'Authorization': u'Token 0ac9e8585ef6ae51eb62c785d10a6c5102de3ff7'}
[
        {
                "source": "DB",
                "email": "015208@zjtlcb.com"
        },
        {
                "source": "DB",
                "email": "99999@zjtlcb.com"
        },
        {
                "source": "DB",
                "email": "zhaoyangjian@gmail.com"
        },
        {
                "source": "DB",
                "email": "zhangzhong@gmail.com"
        },
        {
                "source": "DB",
                "email": "zhouhaiwu@gmail.com"
        }
]

Process finished with exit code 0

免责声明:文章转载自《curl perl python get请求带请求头》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Delphi TcxTreeListColumn 的 ImageComboBox 用法oracle存储过程的异常写法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python基础整理6——爬虫基础知识点

 爬虫基础 什么是爬虫: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 是 捜索引擎抓取系...

Python 读取Excel用例——openpyxl模块

openpyxl是第三方库,专门处理Excel2007及以上版本产生的xlsx文件 Python官方库一般使用xlrd库来读取Excel文件,使用xlwt库来生成Excel文件,使用xlutils库复制和修改Excel文件,这三个库只支持到Excel2003。 openpyxl中有三个不同层次的类,Workbook是对工作簿的抽象,Worksheet是对表...

curl在windows下和linux中使用的一个区别

最近在windows环境下的cmd中,使用curl测试post接口,总是报Failed to decode JSON object的错误。 同样的命令在windows环境的git bash窗口中执行是好的。git bash可以模拟linux环境下一些命令的输入效果。 windows环境中,curl命令中的双引号需要使用""来进行转义。 例如,curl -v...

python迭代器与生成器及yield

一、迭代器(itertor) 1.可迭代: 在Python中如果一个对象有__iter__()方法或__getitem__()方法,则称这个对象是可迭代的(iterable)。 其中__iter__()方法的作用是让对象可以用“for ... in...”方式来循环遍历,_getitem_()方法是让对象可以通过“实例名[index]”的方式访问实例中的元...

python os.path模块常用方法详解(转)

转自:https://www.cnblogs.com/wuxie1989/p/5623435.html os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法。更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.html 1.os.path.abspath(path) ...

python 行转列

#encoding=utf-8 print '中国' #二维阵列变换 行转化成列,列转化成行 lista=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] #使用列表推导 listb=[[r[col] for r in lista] for col in range(len(li...