Python 如何使用cookielib从HTTPResponse中提取cookie?
我正在尝试使用Python 如何使用cookielib从HTTPResponse中提取cookie?,python,python-2.7,httpresponse,Python,Python 2.7,Httpresponse,我正在尝试使用cookielib.CookieJar.extract_cookies()从HTTPResponse中提取cookies,但我一直收到一个错误,说响应对象没有.info属性。我知道它更适合于伪文件对象,比如urllib2.urlopen返回的对象,但是从HTTPResponse中提取cookie的标准方法是什么?以下是我得到的: def _make_request(self, loc, headers, data=None, retry=True): retries = 0
cookielib.CookieJar.extract_cookies()
从HTTPResponse
中提取cookies,但我一直收到一个错误,说响应对象没有.info
属性。我知道它更适合于伪文件对象,比如urllib2.urlopen
返回的对象,但是从HTTPResponse
中提取cookie的标准方法是什么?以下是我得到的:
def _make_request(self, loc, headers, data=None, retry=True):
retries = 0
max_retries = self._retry_max if retry else 1
self._request = urllib2.Request('http://example.com/')
self._connection = httplib.HTTPSConnection(host)
try:
while retries < max_retries:
try:
self._request.add_data(data)
self._connection.request(self._request.get_method(), self._request.get_selector() + loc,
self._request.get_data(), headers)
resp = self._connection.getresponse()
self._cookies.extract_cookies(resp, self._request) # problems!
if len(self._cookies) > 0:
# do something
...
def\u发出请求(self、loc、headers、data=None、retry=True):
重试次数=0
max\u retries=self.\u重试\u max如果重试,则重试1
self.\u request=urllib2.request('http://example.com/')
self.\u connection=httplib.HTTPSConnection(主机)
尝试:
重试次数<最大重试次数:
尝试:
自我请求。添加数据(数据)
self.\u connection.request(self.\u request.get\u方法(),self.\u request.get\u选择器()+loc,
self.\u请求.get\u数据(),标题)
resp=self.\u connection.getresponse()
self._cookies.提取_cookies(resp,self._request)#问题!
如果len(self.\u cookies)>0:
#做点什么
...
谢谢尝试使用键
设置cookie
获取cookie。这是给你们的例子
#!/usr/bin/env python
import urllib
import httplib2
http = httplib2.Http()
url = 'http://www.example.com/login'
body = {'USERNAME': 'foo', 'PASSWORD': 'bar'}
headers = {'Content-type': 'application/x-www-form-urlencoded'}
response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))
headers = {'Cookie': response['set-cookie']}
url = 'http://www.example.com/home'
response, content = http.request(url, 'GET', headers=headers)
模拟响应对象,如我的答案有帮助,请不要忘记接受它。谢谢