云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

大带宽_阿里云电脑版网页_折扣

小七 141 0

我们的团队解决了一个有趣的挑战,涉及到SAP云平台集成和一个API,该API希望在今天接收表单数据。

我们遇到了一个API,该API使用Postman工具接受POST请求,但在从CPI发送"完全相同的内容"(我们稍后将了解更多信息)时总是抛出错误。

因为POST请求需要发送表单数据,这种奇怪的行为使我们深入研究了W3C对表单数据的形式化定义。我们还发现了一些非常好的博客,比如Pieterjan的博客,他从一个稍微不同的角度解释了表单数据。

在这个博客中,我们将解释表单数据的概念,如何从邮递员处发送以及如何从云平台发送到另一个系统

表单数据来源于HTML表单,HTML表单接受用户输入并通过浏览器发送到web服务器。同样的技术也可以用于在浏览器以外的应用程序之间发送数据。

它有两种风格:application/x-www-form-urlencoded和multipart/form data。两者都用于发送键值映射。在HTML表单中,字段表示为字段名称到内容的映射。

Urlencoded表单数据是标准方式,但不足以发送大量二进制数据(也称为文件)。有关更多信息,请参阅W3C定义。

本博客的其余部分将讨论内容类型multipart/form data。不要害怕多部分,如果您的请求只包含一部分,它也可以工作。

首先,我们将探讨如何通过邮递员发送表单数据。使用以下设置可以轻松完成此操作。主体设置为形成数据,可以添加键值对。请注意,可以添加简单的字符串、格式数据(如JSON)以及文件作为值。

Postman会在幕后处理其余的内容。为了在SAP云平台集成中重新创建这个请求,我们首先在Postman中使用原始内容类型重新创建了这个请求。这是必需的,因为CPI不直接支持表单数据,但只有更改标题和正文的基本功能。

我们需要输入的信息是从W3C定义中收集的,并结合Postman的便捷功能,通过单击代码(在上面屏幕截图的右上角)从请求生成代码。详细信息将在下一节中介绍。

在生成的代码中,有两件事很重要,用于创建表单数据:标题内容类型和正文格式。

标题将内容标记为表单数据,并引入边界,这是用户选择的字符串。邮递员为我们制作了这个。不要担心multipart,它适用于所有表单数据,即使它只包含我们示例中的一个部分。

body再次声明表单数据,但也为数据命名,手机自助建站,这是上一节Postman示例中的关键。我们还看到了"ExampleValue",即上述示例中的值。请注意,正文中的边界比标题中声明的边界在开头多了两个破折号"–"。这是每个定义的规则。

更多的键值对可以添加到这里的正文中,但现在让我们保持简单。最后一个边界也需要在最后加上破折号(与标题中的边界相比)。

在CPI中,您现在可以继续创建标题:

和值(注意更简单但仍然有效的边界):

和正文:

通常我们的故事将在这里结束。CPI发送了格式良好的表单数据,我们很高兴。

在我们的例子中,我们试图与之交谈的API将接受来自Postman的表单数据,无论是原始数据还是表单数据。如果我们将Postman中使用的完全相同的头和主体复制到CPI中,我们将得到一个http400错误"无法解析多部分主体"。例如,在上面的示例中,当您省略了Content Disposition和ExampleValue之间的换行符时,就会发生这种情况。

在反复观察不同的有效负载之后,我们尝试不在CPI中创建表单数据,而是从Postman发送到那里,并将其路由到API。通常对于我们的用例,我们需要发送一个SOAP消息,但是由于没有任何工作,这看起来像是我们可以尝试的东西。

而且它是成功的。通过CPI路由来自Postman的消息,API接受了请求。因此,我们检查了我们在CPI中"手工"创建的请求(参见云平台集成章节)与来自Postman的请求之间的差异。

即使在CPI跟踪视图中并排比较,也没有发现差异。我们还创建了一个Iflow,除去了除内容类型之外的所有标题,淘客基地,但是没有运气。

最后,我们比较了Notepad++中的两个有效负载,这两个负载可以显示隐藏的字符,如行尾字符(View->show Symbol->show all characters)。似乎Windows上的Postman创建了"正确"的行尾字符,而CPI创建的UNIX行尾是API无法处理的。原来不是"完全相同的数据"。

为了解决我们的问题,如何成为淘客,我们创建了一个脚本,可以自动转换换行符。如果你遇到这种麻烦,你可以在下面找到它。

在这个博客中,我们解释了什么是表格数据,展示了不同的表格以及如何通过邮递员发送。然后我们转到云平台集成,大数据和小数据,并从那里发送表单数据。最后,我们展示了一个在UNIX行结尾抛出错误的API错误以及如何修复它。

感谢您的阅读!请让我知道,如果你面临类似的问题,或如果你有进一步的问题,大数据包括哪些内容,有关表格数据要求或其他消费物价指数的主题。