如何修复Python代码返回的TypeError:';str';对象不可调用?

如何修复Python代码返回的TypeError:';str';对象不可调用?,python,http,Python,Http,我一直在尝试使用Python(第一次使用它)发送POSTHTTP请求,它不断返回TypeError:“str”对象不可调用 我的代码: import requests import json c100 = "100"; url ="http://api.orange.com/smsmessaging/v1/outbound/tel+21654614211/requests" payload = { "outboundSMSMessageRequest": { "address":

我一直在尝试使用
Python
(第一次使用它)发送
POST
HTTP请求,它不断返回
TypeError:“str”对象不可调用

我的代码:

import requests
import json

c100 = "100";
url ="http://api.orange.com/smsmessaging/v1/outbound/tel+21654614211/requests"

payload = {
  "outboundSMSMessageRequest": {
    "address": "tel+21653424499",
    "outboundSMSTextMessage": {
      "message": "Capteur "+ c100 +"  est en incendie"
    },
    "senderAddress": "tel+21654614211",
    "senderName": "GCI"
  }
}
headers = {'content-type': 'application/json'}
r = requests.post(url, auth=('Basic <omitted>'), data=json.dumps(payload), headers=headers)
导入请求
导入json
c100=“100”;
url=”http://api.orange.com/smsmessaging/v1/outbound/tel+21654614211/请求”
有效载荷={
“outboundSMSMessageRequest”:{
“地址”:“电话+216534499”,
“OutboundsMSTestMessage”:{
“消息”:“俘虏”+c100+“燃烧弹”
},
“发件人地址”:“电话+21654614211”,
“发件人名称”:“GCI”
}
}
headers={'content-type':'application/json'}
r=requests.post(url,auth=('Basic'),data=json.dumps(有效负载),headers=headers)
输出:

Traceback (most recent call last):
  File "main.py", line 18, in <module>
    r = requests.post(url, auth=('Basic U0cwUE1aeGZmZ0JLbUkzWUV2ZWlsM0xBdEt0UVZ4Q1k6SVRqWXQxRU5nWlV4SGM5OQ=='), data=payload, headers=headers)
  File "/usr/lib/python3/dist-packages/requests/api.py", line 88, in post
    return request('post', url, data=data, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 433, in request
    prep = self.prepare_request(req)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 371, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "/usr/lib/python3/dist-packages/requests/models.py", line 291, in prepare
    self.prepare_auth(auth, url)
  File "/usr/lib/python3/dist-packages/requests/models.py", line 470, in prepare_auth
    r = auth(self)
TypeError: 'str' object is not callable
回溯(最近一次呼叫最后一次):
文件“main.py”,第18行,在
r=requests.post(url,auth=('Basic U0CWUE1AEGZMZ0JLBUKZWUV2ZWLSM0xBDET0UVZ4Q1K6SVRQWXQRU5NWLV4SGM5OQ='),数据=有效负载,标头=标头)
文件“/usr/lib/python3/dist-packages/requests/api.py”,第88行,在post中
返回请求('post',url,data=data,**kwargs)
文件“/usr/lib/python3/dist-packages/requests/api.py”,第44行,请求中
return session.request(method=method,url=url,**kwargs)
文件“/usr/lib/python3/dist packages/requests/sessions.py”,请求中第433行
准备=自我准备请求(req)
文件“/usr/lib/python3/dist packages/requests/sessions.py”,第371行,在prepare\u请求中
钩子=合并钩子(request.hooks,self.hooks),
文件“/usr/lib/python3/dist packages/requests/models.py”,第291行,在prepare中
self.prepare\u auth(auth,url)
文件“/usr/lib/python3/dist packages/requests/models.py”,第470行,在prepare\u auth中
r=auth(self)
TypeError:“str”对象不可调用

原始代码中的身份验证参数错误。如果你移除它,它就会工作

r = requests.post(url, data=json.dumps(payload), headers=headers)

您的身份验证是错误的,问题是:您需要身份验证吗

基本身份验证许多需要身份验证的web服务都接受HTTP基本身份验证。这是最简单的一种,并且要求 从盒子里直接支撑它

使用HTTP Basic Auth发出请求非常简单:

>>> from requests.auth import HTTPBasicAuth
>>> requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass'))
<Response [200]>

在哪一行发生错误?第18行最后一行请编辑您的帖子,以包含您尝试运行代码时得到的回溯的全部文本。@JoshKarpel我在原始帖子中添加了回溯的全部文本谢谢您的回答,我拥有的身份验证令牌没有用户和通行证,这只是一长串随机字符,前面有“Basic”谢谢,但我得到了一个TypeError:request()在运行时得到了一个意外的关键字参数“json”。对不起,我的错误,改为尝试data=json。dumps(payload)谢谢,我尝试了你发布的内容,但没有得到任何输出,我怀疑它工作正常,是否有方法调试和查看是否发出请求?抱歉,第一次使用Python
>>> requests.get('https://api.github.com/user', auth=('user', 'pass'))
<Response [200]>
import requests

auth_token='sdasadadsadas'
head = {'Authorization': 'Bearer ' + auth_token}
payload = {
  "outboundSMSMessageRequest": {
    "address": "tel+21653424499",
    "outboundSMSTextMessage": {
      "message": "Capteur "+ c100 +"  est en incendie"
    },
    "senderAddress": "tel+21654614211",
    "senderName": "GCI"
  }
}

url = 'http://api.orange.com/smsmessaging/v1/outbound/tel+21654614211/requests'
response = requests.post(url,  json = payload, headers=head)