码迷,mamicode.com
首页 > Web开发 > 详细

urllib TypeError: memoryview: dict object does not have the buffer interface

时间:2015-01-26 11:51:43      阅读:422      评论:0      收藏:0      [点我收藏+]

标签:

import urllib.request
url = ‘site‘
headers = {‘Authorization‘ : ‘Basic emVkMHg6WWJyYm5mMDA=‘}
req = urllib.request.Request(url, headers)
response = urllib.request.urlopen(req).getcode()

出现错误:

Traceback (most recent call last):
  File "C:\Program Files\Python33\lib\urllib\request.py", line 1186, in do_request_
    mv = memoryview(data)
TypeError: memoryview: dict object does not have the buffer interface

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/zed/Desktop/sddf.py", line 6, in <module>
    response = urllib.request.urlopen(req).getcode()
  File "C:\Program Files\Python33\lib\urllib\request.py", line 156, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files\Python33\lib\urllib\request.py", line 467, in open
    req = meth(req)
  File "C:\Program Files\Python33\lib\urllib\request.py", line 1191, in do_request_
    data))
ValueError: Content-Length should be specified for iterable data of type <class dict> {Authorization: Basic emVkMHg6WWJyyM5mMDA=}

解决办法:

先看Requset定义:

class Request:
    def __init__(self, url, data=None, headers={},
                 origin_req_host=None, unverifiable=False,
                 method=None):

所以,应该改为

req = urllib.request.Request(url, headers = headers)

 

urllib TypeError: memoryview: dict object does not have the buffer interface

标签:

原文地址:http://www.cnblogs.com/arhatlohan/p/4249776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!