Swagger API和与python请求的交互
购买了一款产品,使我们的用户能够通过HTTP发送/接收SMS。现在,我的工作是将其构建到我们当前的CMS平台和数据库中。它有一个招摇过市的API 以下是我试图发送的特定POST请求的文档: 下面是我的简单python程序,用于测试功能。我得到一个通用的500内部服务器错误响应。我做错了什么Swagger API和与python请求的交互,python,python-requests,swagger,Python,Python Requests,Swagger,购买了一款产品,使我们的用户能够通过HTTP发送/接收SMS。现在,我的工作是将其构建到我们当前的CMS平台和数据库中。它有一个招摇过市的API 以下是我试图发送的特定POST请求的文档: 下面是我的简单python程序,用于测试功能。我得到一个通用的500内部服务器错误响应。我做错了什么 import requests API_URL = "https://api.kenect.com/v1/conversations/messages" headers = { 'x-api-t
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)
似乎有两个问题:
post
方法中使用params
参数params
与的get
方法一起使用
在post
方法中,根据所需的内容类型,您需要使用data
参数来:
r=requests.post(url=API\uurl,headers=headers,data=params)
或json
参数发送application/json
有效负载:
r=requests.post(url=API\uurl,headers=headers,json=params)
从标题中删除“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)
似乎有两个问题:
post
方法中使用params
参数params
与的get
方法一起使用
在post
方法中,根据所需的内容类型,您需要使用data
参数来:
r=requests.post(url=API\uurl,headers=headers,data=params)
或json
参数发送application/json
有效负载:
r=requests.post(url=API\uurl,headers=headers,json=params)
从标题中删除“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)
感谢您的建议和提示-但仍然是相同的[500]回复。。。即使使用邮递员!好的,它可能是另一个500:)您能否共享请求和响应对象的内容,以查看引擎盖下发生了什么?正在努力让您从发送请求的python程序中打印并保存实际响应。当使用postman传递所需的最小标题和参数时,响应为“Content type‘application/json’not supported”。。但是,在尝试其他内容类型时,这些内容类型似乎都不起作用(相同的不支持错误)。参考文档,示例显示了内容类型“string”,但这对我来说没有意义。与文本相关的内容类型也不起作用。让我知道你想看什么,我会寄给你的。谢谢你抽出时间!哦,我错过了json内容类型。如果用
json
param:r=requests.post(url=API_url,headers=headers,json=params
)替换data
param会发生什么?我也在与他们的支持人员一起努力解决这个问题。他们告诉我,这个请求的正确内容类型是“application/x-www-form-urlencoded”…唉,在具有该内容类型的postman中仍然不起作用。那么,是否有其他参数可用于应用程序/x-www-form-urlencoded,这可能会起作用?感谢您的建议和提示-但仍然是相同的[500]响应…即使在使用postman时也是如此!嗯,可能是另一个500:)您能否共享请求和响应对象的内容,以查看引擎盖下发生了什么?正在努力让您从发送请求的python程序中打印并保存实际响应。当使用postman传递所需的最小标题和参数时,响应为“Content type‘application/json’not supported”。。但是,在尝试其他内容类型时,这些内容类型似乎都不起作用(相同的不支持错误)。参考文档,示例显示了内容类型“string”,但这对我来说没有意义。与文本相关的内容类型也不起作用。让我知道你想看什么,我会寄给你的。谢谢你抽出时间!哦,我错过了json内容类型。如果用json
param:r=requests.post(url=API_url,headers=headers,json=params
)替换data
param会发生什么?我也在与他们的支持人员一起努力解决这个问题。他们告诉我,这个请求的正确内容类型是“application/x-www-form-urlencoded”…唉,在具有该内容类型的postman中仍然不起作用。因此,是否有其他参数可用于可能起作用的application/x-www-form-urlencoded?似乎有2个问题。请参阅更新的答案。似乎有2个问题。请参阅更新的答案。