使用 API POST 到 REST Web 服务:正文序列化

Posted

技术标签:

【中文标题】使用 API POST 到 REST Web 服务:正文序列化【英文标题】:POST to REST webservices using API: body serialization 【发布时间】:2012-01-05 02:06:07 【问题描述】:

我正在尝试使用 REST 网络服务,按照此处的指示:http://social.technet.microsoft.com/wiki/contents/articles/invoke-restful-web-services-with-biztalk-server-2010.aspx

然而,GET 似乎工作正常,但 POST 却失败了,因为不知何故,消息被序列化为字符串。

我明白了:

POST /my_app/12005ab0-1522-71e1-0dde-0a0801c50000 HTTP/1.1
Content-Type: application/xml; charset=utf-8
Host: bsmshell.inovaprime.com:81
Content-Length: 174
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">&lt;body xmlns="http://microsoft.com/schemas/samples/biztalkwebhttp/1.0"&gt;HelloWorld&lt;/body&gt;</string>

代替:

POST /my_app/12005ab0-1522-71e1-0dde-0a0801c50000 HTTP/1.1
Content-Type: application/xml; charset=utf-8
Host: bsmshell.inovaprime.com:81
Content-Length: 174
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<body xmlns="http://microsoft.com/schemas/samples/biztalkwebhttp/1.0">HelloWorld</body>

这带有如下消息: 12005ab0-1522-71e1-0dde-0a0801c50000 应用程序/xml;字符集=utf-8 你好世界

端口配置如文章所示。

关于我看到这种行为的可能原因的任何指示?

谢谢

【问题讨论】:

刚刚遇到问题,它在以下行: Message.CreateMessage(request.Version, request.Headers.Action, bodyElement.ToString());将其更改为: Message.CreateMessage(request.Version, request.Headers.Action, bodyElement);解决了问题。 可能是因为您将 content-type 设置为 application/xml 并且您使用的 API 尝试将其转换为 XML,尝试将 content-type 设置为简单字符串的纯文本/文本 @Newby - 如果您自己找到了解决方案,为什么不在下面添加它作为答案,然后接受它。这样其他人可以更轻松地找到它,并且如果他们觉得它有用就可以投票给它。 能否请您结束您的问题?它显示为未答复... 【参考方案1】:

Message.CreateMessage(request.Version, request.Headers.Action, bodyElement.ToString());将其更改为: Message.CreateMessage(request.Version, request.Headers.Action, bodyElement);解决了这个问题。

[发帖让别人知道]

【讨论】:

【参考方案2】:

原因是content-type

【讨论】:

@burning_LEGION 正在制作考古学家徽章,我明白了。

以上是关于使用 API POST 到 REST Web 服务:正文序列化的主要内容,如果未能解决你的问题,请参考以下文章

使用 alamofire 将带有 JSON 对象和查询参数的 POST 请求发送到 REST Web 服务

使用 post 创建一个到 REST API 的条目

500内部服务器错误;在spring Boot rest api中使用POST方法时

如何使用 nodejs 创建 POST REST API? [复制]

REST API用于连接在线REST服务器

Spring Rest API 的 AJAX POST 方法不起作用