属性误差变量头通过Post请求



我得到一个AttributeError,当我试图通过一个post请求获得Token的头。

代码:

import requests
endpoint = 'https://api.website/v1/token'
header ={
'Content-Type: application/x-www-form-urlencoded',
'Cache-Control: no-cache'
}
data = {
'username=<username>',
'password=<password>',
'grant_type=password',
'client_id=api'
}
request = requests.post(endpoint, headers=header, data=data, verify=False)
print(request)

使用——data-urlencode:

curl -X POST 
https://api.website/v1/token 
-H 'Content-Type: application/x-www-form-urlencoded' 
-H 'Cache-Control: no-cache' 
--data-urlencode username=<YourUsername> 
--data-urlencode password=<YourPassword> 
--data-urlencode grant_type=password 
--data-urlencode client_id=token-api

错误:

Traceback (most recent call last):
File "c:LearningAPI.py", line 14, in <module>
request = requests.post(endpoint, headers=header, data=data, verify=False)
File "C:UsersUserAppDataLocalProgramsPythonPython310libsite-packagesrequestsapi.py", line 115, in post
return request("post", url, data=data, json=json, **kwargs)
File "C:UsersUserAppDataLocalProgramsPythonPython310libsite-packagesrequestsapi.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
File "C:UsersUserAppDataLocalProgramsPythonPython310libsite-packagesrequestssessions.py", line 573, in request
prep = self.prepare_request(req)
File "C:UsersUserAppDataLocalProgramsPythonPython310libsite-packagesrequestssessions.py", line 484, in prepare_request
p.prepare(
File "C:UsersUserAppDataLocalProgramsPythonPython310libsite-packagesrequestsmodels.py", line 369, in prepare
self.prepare_headers(headers)
File "C:UsersUserAppDataLocalProgramsPythonPython310libsite-packagesrequestsmodels.py", line 489, in prepare_headers
File "C:UsersUserAppDataLocalProgramsPythonPython310libsite-packagesrequestsapi.py", line 115, in post
return request("post", url, data=data, json=json, **kwargs)                                   t/API.py
File "C:UsersUserAppDataLocalProgramsPythonPython310libsite-packagesrequestsapi.py", line 59, in request
return session.request(method=method, url=url, **kwargs)                                      False)
File "C:UsersUserAppDataLocalProgramsPythonPython310libsite-packagesrequestssessio", line 115, in postns.py", line 573, in request
prep = self.prepare_request(req)                                                              ", line 59, in request
File "C:UsersUserAppDataLocalProgramsPythonPython310libsite-packagesrequestssessions.py", line 484, in prepare_request                                                              ns.py", line 573, in request
p.prepare(
File "C:UsersUserAppDataLocalProgramsPythonPython310libsite-packagesrequestsmodelsns.py", line 484, in prepare_request.py", line 369, in prepare
self.prepare_headers(headers)                                                                 .py", line 369, in prepare
File "C:UsersUserAppDataLocalProgramsPythonPython310libsite-packagesrequestsmodels.py", line 489, in prepare_headers  
AttributeError: 'set' object has no attribute 'items'

我尝试将单引号改为双引号,但它会有相同的错误。

我还尝试使用curl没有——data-urlencode:

-d 'username=<YourUsername>&password=<YourPassword>&grant_type=password&client_id=token-api'

代码:

data = {
'username=<YourUsername>&password=<YourPassword>&grant_type=password&client_id=token-api'
}

但得到相同的错误

代码与头……也可能有一个简单的错误数据,但我不确定。下面是带有内联解释的代码。

import requests
endpoint = 'https://api.website/v1/token'
# Below you have a set and it is expecting a dictionary
# header = {
#     'Content-Type: application/x-www-form-urlencoded',
#     'Cache-Control: no-cache'
# }
# Below is a dictionary, notice I only added quotes before and after the colon.
# Now it has the keys and values like "name_of_header": "value"
# single or double quotes do not matter here.
header = {
'Content-Type': 'application/x-www-form-urlencoded',
'Cache-Control': 'no-cache'
}
data = {
'username=<username>',
'password=<password>',
'grant_type=password',
'client_id=api'
}
request = requests.post(endpoint, headers=header, data=data, verify=False)
print(request)

最新更新