python-requests auth 405 error and AttributeError: 'unicode' object has no attribute 'items'

python-requests auth 405 error and AttributeError: 'unicode' object has no attribute 'items'

我正在尝试使用 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'

请问我是不是做错了什么?

此致

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

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

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