当前位置: 首页 > 知识库问答 >
问题:

Swagger API和与python请求的交互

赫连瑾瑜
2023-03-14

购买了一款产品,使我们的用户能够通过HTTP发送/接收SMS。现在,我的工作是将其构建到我们当前的CMS平台中

以下是我试图发送的特定POST请求的文档:POST:发送SMS消息

这是我的简单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)

共有1个答案

施飞昂
2023-03-14

似乎有2个问题:

>

  • 内容类型和有效载荷编码。

    您正在post方法中使用params参数paramsget方法一起使用,用于在URL的查询字符串中传递数据。

    post方法中,根据所需的内容类型,您需要使用data参数发送表单编码数据:

    r=请求。post(url=API\U url,headers=headers,data=params)

    json参数发送应用程序/json有效载荷:

    r=请求。post(url=API\U url,headers=headers,json=params)

    标题中删除“Content Type”键datajson参数将自动设置正确的内容类型。

    传出不是/v1/对话/消息资源的有效请求参数。该字段来自响应对象,而不是请求对象。从你的有效载荷中移除它。

    总而言之,对于表单编码的有效载荷,代码应该是这样的:

    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)
    

  •  类似资料:
    • 问题内容: 我一直在研究Python的模块,我想使用python的bash进行“交互式会话”。我希望能够像在终端模拟器上一样从Python读取bash输出/写入命令。我猜一个代码示例可以更好地解释它: (显然,这种方式行不通。)是否可能出现这种情况,怎么办? 非常感谢 问题答案: 请尝试以下示例: 您必须阅读有关stdin,stdout和stderr的更多信息。看起来不错的演讲:http://ww

    • 问题内容: (我尝试过查找,但所有其他答案似乎都在使用urllib2) 我刚刚开始尝试使用请求,但是对于如何发送或请求页面中的其他内容,我仍然不太清楚。例如,我要 但我不知道现在该如何做,例如,使用显示的搜索栏进行Google搜索。我已经阅读了快速入门指南,但是对HTML POST之类的内容并不十分熟悉,因此它并不是很有帮助。 有没有一种干净优雅的方法来完成我要的内容? 问题答案: 要求概述 Go

    • 我试图得到一个API查询到python。命令行 给出一些json输出。myToken是一个十六进制变量,始终保持不变。我想从python中调用它,这样我就可以循环使用不同的ID并分析输出。有什么想法吗?在需要身份验证之前,我已经使用urllib2完成了这项工作。我还查看了requests模块,但不知道如何实现。 非常感谢。

    • 问题内容: 我尝试了python 请求库文档中提供的示例。 使用,我得到了响应代码,但是我想获得所请求的每个页面的内容。例如,这不起作用: 问题答案: 注意 下面的答案是不适用于请求v0.13.0 +。编写此问题后,异步功能已移至。但是,你可以将其替换为下面的内容,它应该可以工作。 我已经留下了这个答案,以反映原始问题,即有关使用请求的问题。 要异步执行多个任务,你必须: 为每个对象定义一个函数(

    • 问题内容: 我正在使用请求模块(Python 2.5的版本0.10.0)。我已经弄清楚了如何将数据提交到网站上的登录表单并检索会话密钥,但是我看不到在后续请求中使用此会话密钥的明显方法。有人可以在下面的代码中填写省略号还是建议其他方法? 问题答案: 您可以使用以下方法轻松创建持久会话: 之后,请继续执行您的请求: 有关会话的更多信息,请访问:https : //requests.kennethre

    • 我正在使用POST请求向服务器发送CSV文件。 我正在使用一个类似文件的对象与 如果CSV文件相当大,并且我的内存有限,或者我使用类似文件的对象将永远不会在内存中加载整个文件,那么会有问题吗?我对此不确定。 我知道有流选项,但听起来更像是为了获得响应而不是发送数据。