【问题标题】:python-requests auth 405 error and AttributeError: 'unicode' object has no attribute 'items'python-requests auth 405 错误和 AttributeError: 'unicode' object has no attribute 'items'
【发布时间】:2017-10-21 04:15:32
【问题描述】:

我正在尝试使用 python "requests" 模块来访问 SECURE NIFI rest API (https://nifi.apache.org/docs/nifi-docs/rest-api/)。到目前为止,我面临两个问题:

  1. 我尝试使用由 “请求”模块登录到安全的 NIFI(使用 OpenLDAP),但它 给我“400”状态码。所以我 必须在请求的 HEADERS 中传递“用户名和密码”才能获取 用户令牌。
  2. 当我尝试将获得的令牌传递给进一步 请求:

(例如,pg_resp=requests.get("https://localhost:9443/nifi-api/process-groups/2be8231f-015b-1000-47b1-428fc8c594e1", headers="Authorization: Bearer <auth_code>")),

它给了我这个错误“AttributeError: 'unicode' object has no attribute 'items'”。我试图将'unicode'更改为字符串,但'string'也没有属性'items'

两个 'unicode' 的回溯是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/shambakey1/miniconda2/lib/python2.7/site-packages/requests/api.py", line 70, in get
    return request('get', url, params=params, **kwargs)
  File "/home/shambakey1/miniconda2/lib/python2.7/site-packages/requests/api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "/home/shambakey1/miniconda2/lib/python2.7/site-packages/requests/sessions.py", line 461, in request
    prep = self.prepare_request(req)
  File "/home/shambakey1/miniconda2/lib/python2.7/site-packages/requests/sessions.py", line 394, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "/home/shambakey1/miniconda2/lib/python2.7/site-packages/requests/models.py", line 295, in prepare
    self.prepare_headers(headers)
  File "/home/shambakey1/miniconda2/lib/python2.7/site-packages/requests/models.py", line 407, in prepare_headers
    for header in headers.items():
AttributeError: 'unicode' object has no attribute 'items'

'str' 的回溯是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/shambakey1/miniconda2/lib/python2.7/site-packages/requests/api.py", line 70, in get
    return request('get', url, params=params, **kwargs)
  File "/home/shambakey1/miniconda2/lib/python2.7/site-packages/requests/api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "/home/shambakey1/miniconda2/lib/python2.7/site-packages/requests/sessions.py", line 461, in request
    prep = self.prepare_request(req)
  File "/home/shambakey1/miniconda2/lib/python2.7/site-packages/requests/sessions.py", line 394, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "/home/shambakey1/miniconda2/lib/python2.7/site-packages/requests/models.py", line 295, in prepare
    self.prepare_headers(headers)
  File "/home/shambakey1/miniconda2/lib/python2.7/site-packages/requests/models.py", line 407, in prepare_headers
    for header in headers.items():
AttributeError: 'str' object has no attribute 'items'

不知道是不是我做错了什么?

问候

【问题讨论】:

    标签: python python-requests apache-nifi


    【解决方案1】:

    您需要将标头作为dict 传递给requests.get() 方法:

    pg_resp=requests.get(
        "https://localhost:9443/nifi-api/process-groups/2be8231f-015b-1000-47b1-428fc8c594e1",
        headers={"Authorization": "Bearer <auth_code>"}
    )
    

    请求模块试图将您的字符串解压缩为 dict(在其上调用 items()),而 strunicode 都没有这种方法,因此出现错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 2022-12-01
      • 2022-12-03
      • 2019-04-18
      • 2018-02-05
      • 2014-12-20
      • 1970-01-01
      相关资源
      最近更新 更多