Python请求模块类型错误:“函数”对象不可编辑

2024-03-28 12:04:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我从请求模块得到错误信息。 几天前,我的代码还在工作,但现在已经不工作了

File "C:\Program Files (x86)\Python38-32\lib\site-packages\requests\adapters.py", line 469, in send
            for i in request.body:
        TypeError: 'function' object is not iterable

Python=3.8

请求数=2.22.0

完整代码

C:\Windows\system32>python
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:21:23) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import json, requests
>>> from requests.auth import HTTPBasicAuth
>>> url = "https://mywebsite.com/"
>>> auth = HTTPBasicAuth("username", "password")
>>> headers = { "Accept": "application/json","Content-Type": "application/json"}
>>> tickets_created = []
>>> payload = json.dumps
>>> (
...     {
...         "fields":
...         {
...         "project":
...             {
...             "key": "PROJECT_A"
...             },
...         "summary": "summary",
...         "description": "desc",
...         "issuetype":
...             {
...             "name": "Incident",
...             },
...         "components":
...     [{"name":"Active Directory" }],
...         "assignee":
...             {
...             "name":"aashutosh.kumar@mywebsite.com"
...             }
...        }
...     }
... )
{'fields': {'project': {'key': 'PROJECT_A'}, 'summary': 'summary', 'description': 'desc', 'issuetype': {'name': 'Incident'}, 'components': [{'name': 'Active Directory'}], 'assignee': {'name': 'aashutosh.kumar@mywebsite.com'}}}
>>> response = requests.request("POST",url,data=payload,headers=headers,auth=auth,verify=False)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\requests\api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\requests\sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\requests\sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\requests\adapters.py", line 469, in send
    for i in request.body:
TypeError: 'function' object is not iterable
>>>

Tags: nameinpysendrequestlibpackagesline
3条回答

您使用的变量auth似乎是一个函数,而不是元组或列表

^{}的文件说:

:param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth.

试试这个:

requests.post(url,data=payload, headers=headers, auth=auth, verify=False)

问题是您正在设置payload = json.dumps-它后面的所有行都而不是被传递到dumps()。改为这样做(将开括号放在同一行):

payload = json.dumps(
    {
        "fields":
        {
        "project":
            {
            "key": "PROJECT_A"
            },
        "summary": "summary",
        "description": "desc",
        "issuetype":
            {
            "name": "Incident",
            },
        "components":
    [{"name":"Active Directory" }],
        "assignee":
            {
            "name":"aashutosh.kumar@mywebsite.com"
            }
       }
    }
)

相关问题 更多 >