[英]Swagger API and interaction with python requests
购买了一种产品,使我们的用户能够通过 HTTP 发送/接收 SMS。 现在我的工作是将它构建到我们当前的 CMS 平台和数据库中。 它有一个 swagger API。
这是我尝试发送的特定 POST 请求的文档: POST: Send an SMS Message
这是我用来测试功能的简单 python 程序。 我得到一个通用的 500 内部服务器错误响应。 我做错了什么?
import requests
API_URL = "https://api.kenect.com/v1/conversations/messages"
headers = {
'x-api-token': '****************',
'x-api-key': '*******************',
'Content-Type': 'application/json',
}
params = {
'contactPhone': '158572968**',
'locationId': '2045',
'messageBody': 'test sms',
'outgoing': 'true',
}
r=requests.post(url = API_URL, headers = headers, params = params)
print(r)
似乎有2个问题:
内容类型和负载编码。
您在post
方法中使用params
参数。 params
与get
方法一起用于在 URL 的查询字符串中传递数据。
在post
方法中,根据所需的内容类型,您需要使用任一data
参数来发送表单编码数据:
r=requests.post(url = API_URL, headers = headers, data = params)
或json
参数来发送application/json
负载:
r=requests.post(url = API_URL, headers = headers, json = params)
从headers
字典中删除 'Content-Type' 键。 data
和json
参数将自动设置正确的内容类型。
outgoing
不是/v1/conversations/messages
资源的有效请求参数。 该字段来自响应对象,而不是请求对象。 从您的有效负载中删除它。
总而言之,对于表单编码的有效负载,代码应如下所示:
import requests
API_URL = "https://api.kenect.com/v1/conversations/messages"
headers = {
'x-api-token': '****************',
'x-api-key': '*******************',
}
params = {
'contactPhone': '158572968**',
'locationId': '2045',
'messageBody': 'test sms',
}
r=requests.post(url = API_URL, headers = headers, data = params)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.