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)
  • 相关阅读:
    数据库+mysql
    网络并发项目
    网络编程 IO模型
    并发编程之死锁、进程池、协程
    类的使用
    面向对象—多态,反射
    面向对象-三大特性
    继承与派生
    面向对象
    模块进阶(二)
  • 原文地址:https://www.cnblogs.com/arhatlohan/p/4249776.html
Copyright © 2011-2022 走看看