AttributeError: 'str' 对象没有属性'its items'(python)

问题描述 投票:0回答:1

我试图使用这段代码将数据发布到网站的api上。

import requests as r
import json


load={"accept": "application/json, text/plain, */*",
"accept-encoding": "gzip, deflate, br",
"accept-language": "en-US,en;q=0.9",
"content-length": "40",
"content-type": "application/json",
"origin": "www.mysite.com",
"referer": "www.mysite.com",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "cross-site",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36 Edg/83.0.478.37",
}

pd={"version"="1.0"}
ro = r.post("api.mysite.com", headers=json.dumps(load),data=pd)


print(ro.status_code, ro.reason)

但我一直收到这个错误。

Traceback (most recent call last):
  File "test.py", line 18, in <module>
    ro = r.post("https://api.mysite.com", headers=json.dumps(load),data=pd)
  File "C:\Users\ajay1998A\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\api.py", line 119, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "C:\Users\ajay1998A\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\api.py", line 61, in reques
t
    return session.request(method=method, url=url, **kwargs)
  File "C:\Users\ajay1998A\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 516, in
request
    prep = self.prepare_request(req)
File "C:\Users\ajay1998A\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 459, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "C:\Users\ajay1998A\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\models.py", line 315, in prepare
    self.prepare_headers(headers)
  File "C:\Users\ajay1998A\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\models.py", line 447, in prepare_headers
for header in headers.items():
AttributeError: 'str' object has no attribute 'items'

我检查了负载的类型,是字典。 任何帮助是感激的。

python python-3.x python-requests python-3.5 urllib
1个回答
2
投票

正如你所说的,你的 load 对象已经是一个 dictionary (它是 json 可序列化的,并且有一个 items 属性),通过编写

headers = json.dumps(load)

json.dumps方法是将你的加载对象编码成一个字符串的JSON(它没有一个项目方法)

试试

headers = load

而是

© www.soinside.com 2019 - 2024. All rights reserved.