zoukankan      html  css  js  c++  java
  • urllib TypeError: memoryview: dict object does not have the buffer interface

    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 FilesPython33liburllib
    equest.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 FilesPython33liburllib
    equest.py", line 156, in urlopen
        return opener.open(url, data, timeout)
      File "C:Program FilesPython33liburllib
    equest.py", line 467, in open
        req = meth(req)
      File "C:Program FilesPython33liburllib
    equest.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)
  • 相关阅读:
    JSR 303
    Spring JSR-250注解
    java 内部类
    爬虫
    多线程异步编程示例和实践-Task
    多线程异步编程示例和实践-Thread和ThreadPool
    线程机制、CLR线程池以及应用程序域
    二维码的生成与识别
    Unicode 和 UTF-8 有何区别?
    json转换为自定义类型的集合
  • 原文地址:https://www.cnblogs.com/arhatlohan/p/4249776.html
Copyright © 2011-2022 走看看