回复内容:

贴了那么多track,却没有贴报的错,心塞
更新,补充下@云语的答案,你可以看到他给出的官方文档里面也没有提到有headers这个参数,但之所以可以传headers并且需要写成headers=的形式是因为这样写类似于写一个dict然后被处理成requests对象传给urlopen。而如果确实不能处理headers这个参数,那也会报错“typeerror:urlopen got an unexpected keyword argument headers”,所以我才说你贴了很多traceback却没有把最后一行报的错贴出来。

参数传错了
去翻翻手册, 就知道urllib2的urlopen第三个参数并不是headers, 并且同时根本也没有headers参数.
然后构造urllib2的Request对象的第三个参数才是headers, 所以你需要先构建一个Request对象, 然后urllib2.urlopen的参数传递这个Request对象

对于urllib2, 要加请求头,要这样写

request = urllib2.Request(uri)
request.add_header('User-Agent', 'fake-client')
response = urllib2.urlopen(request)
登录后复制

题主那种写法不对,建议你看下requests库,写法就像你那种写法,比较好用.

建议用requests吧

import requests
url = ''
data = {}
headers = {}

g = requests.get(url, data=data, headers=headers)
p = requests.post(url, data=data, headers=headers)

print g.text, p.text
登录后复制
09-08 12:23