作为一个 python 新手,我很无语, urllib2 的 add_header 搞了一天,求助解决方法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ethsol
V2EX    程序员

作为一个 python 新手,我很无语, urllib2 的 add_header 搞了一天,求助解决方法

  •  1
     
  •   ethsol 2016-10-12 09:52:13 +08:00 8203 次点击
    这是一个创建于 3344 天前的主题,其中的信息可能已经有所发展或是发生改变。

    代码

    ... >>> h = {"Content-Type": "application/json"} >>> req = urllib2.Request(url,js,h) >>> req.has_header("Content-Type") False >>> req.get_header("Content-type") 'application/json' 

    key 被 capitalize 了,我这个 header 就要 Content-Type 的,怎么搞?

    18 条回复    2016-10-13 13:02:08 +08:00
    upczww
        1
    upczww  
       2016-10-12 09:58:21 +08:00 via Smartisan T1   2
    你应该试试 requests.
    HTTP for Humans.
    shadowmydx
        2
    shadowmydx  
       2016-10-12 10:30:45 +08:00   2
    这个很简单,这个 header 是 Request 对象中一个叫 headers 的成员,如果一定要大写,你直接这么写就可以:
    h = {"Content-Type": "application/json"}
    req = urllib2.Request(url, js, headers=h)
    req.headers = h
    print req.has_header("Content-Type")
    print req.get_header("Content-Type")
    ethsol
        3
    ethsol  
    OP
       2016-10-12 10:38:38 +08:00
    @shadowmydx 可以了,但是为什么要额外加 req.headers = h
    ethsol
        4
    ethsol  
    OP
       2016-10-12 10:52:04 +08:00
    @upczww 很好 requests 更简洁
    ThinkCat
        5
    ThinkCat  
       2016-10-12 10:55:19 +08:00
    你应该用下 requests , 这个真心好用
    ryd994
        6
    ryd994  
       2016-10-12 11:03:42 +08:00 via Android
    因为 HTTP 协议本来就规定 header 不分大小写: https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
    ubear1991
        7
    ubear1991  
       2016-10-12 13:16:26 +08:00
    用 requests
    TKKONE
        8
    TKKONE  
    PRO
       2016-10-12 13:43:51 +08:00
    看到那么多人推荐 requests ,我就放心了。
    还是用 requests 吧,妥妥的
    ethsol
        9
    ethsol  
    OP
       2016-10-12 14:09:31 +08:00
    已用 requests ,妥妥的
    jixiangqd
        10
    jixiangqd  
       2016-10-12 15:10:41 +08:00
    试过 requests 并发性能不是很好。。。不知道为什么
    qweweretrt515
        11
    qweweretrt515  
       2016-10-12 19:37:15 +08:00
    requests 啊
    sherwinkoo
        12
    sherwinkoo  
       2016-10-12 19:53:46 +08:00
    @jixiangqd 你怎么测试的?
    jixiangqd
        13
    jixiangqd  
       2016-10-12 19:59:59 +08:00
    @sherwinkoo 试过自带进程池、线程池模块、 gevent 协程:都是 urllib2 性能最好,差的还不是一点半点。不知道是不是有什么配置可以改进并发性能,没有深入研究
    purrgil
        14
    purrgil  
       2016-10-13 03:25:43 +08:00
    life is short,you neet requests
    purrgil
        15
    purrgil  
       2016-10-13 03:29:56 +08:00
    Life is short,you need requests.
    ibigbug
        16
    ibigbug  
       2016-10-13 03:54:59 +08:00
    rfc 是规定 http header 不区分大小写的,你可能无语错地方了
    shadowmydx
        17
    shadowmydx  
       2016-10-13 12:19:16 +08:00
    @zong400 因为 urlib2 在构建 Request 对象时对你传入的参数进行了统一的处理,其中,处理 header 后,将其赋予一个成员变量 headers 。因此,你只需要重新替换掉这个成员就可以了。
    chy373180
        18
    chy373180  
       2016-10-13 13:02:08 +08:00
    requests 何来的并发性能不是很好。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     925 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 22:24 PVG 06:24 LAX 14:24 JFK 17:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86