【问题标题】:BizTalk Send Adapter HTTP Post ResponseBizTalk 发送适配器 HTTP 发布响应
【发布时间】:2012-11-02 19:44:46
【问题描述】:

我有一个 BizTalk 2010 项目,其中包含一个编排,该编排需要进行 HTTP 发布,然后检查响应的状态代码和正文以确定下一步行动。

我可以配置编排和端口来进行 HTTP Post,但我无法收到响应。

我应该使用发送/接收端口还是关联?

我应该为响应使用什么架构(我相信响应是标准的 http 响应:http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6)。

【问题讨论】:

  • 当您说 HTTP 发布时,您是指将 Xml 发送到 SOAP 服务,或者例如POX 或 JSON WebAPI 调用或 MVC 控制器操作等?
  • 不是xml,是类似于EDI的结构化文本。
  • @Matt 你能发一下 EDI 消息结构吗
  • @Matt - 您的发送端口是如何配置的?当您说您无法收到响应时,您的意思是正在发生错误,还是您没有看到编排收到响应?
  • @MlkCode,我无法发送 EDI 消息结构。我只是尝试执行一个帖子并检查以类似于stackoverflow.com/questions/692342/… 上的 Jugglist 答案但使用 BizTalk 的方式返回的响应状态代码(和响应正文)。我认为消息或服务类型不相关。

标签: http post adapter biztalk send


【解决方案1】:

Http 状态代码应该作为上下文属性在响应消息中可用,您可以在表达式形状中访问它。

statusCode = ResponseMessage(HTTP.ResponseStatusCode);

您的 ResponseMessage 应该是 System.Xml.XmlDocument 类型,但由于它不是真正的 Xml 文档,请确保将请求/响应端口配置为使用响应端的 PassThruReceive 管道。

【讨论】:

  • 感谢 Brett,但是我收到一条错误消息“消息中没有与属性 'HTTP.ResponseStatusCode' 关联的值。”
  • 为了清楚起见:我有一个编排将一个简单的 xml 消息 (test) 发送到发送-接收端口。请求消息类型与简单消息的架构相匹配,并将发送管道配置为 XMLTransmit。响应消息类型为 System.Xml.XMLDocument,接收管道配置为 PassThruReceive。在接收形状之后,我有一个表达式形状,其中包含将 HTTP.ResponseStatusCode 写入事件日志的代码。发送端口是 HTTP 类型。
  • 我取得了一些进展;在接收端口上使用自定义管道组件使我能够看到响应正文。但是状态代码和响应描述不包含在其中。这也有一个限制,即只有成功的消息(状态代码 200)才会生成响应。
  • 我还设置了一个发送端口,以将消息的 ACKS 和 NACKS 保存在“传递通知”设置为“已传输”的单向发送端口上。我只能看到 NACK 的响应正文和响应状态代码
  • 看来使用 user1826905 建议的两种方法的组合将解决原始问题。
【解决方案2】:

如果您正在寻找消息已成功传输的一种通知(不在消息内容中),您可以在编排中设置逻辑发送端口属性,如下所示:

"Delivery Notification" = Transmitted

可以使用 Microsoft.XLANGs.BaseTypes.DeliveryFailureException 处理交付失败

【讨论】:

  • 感谢您的回复,但我不确定其中任何一个如何让我查看/提取 http 响应状态代码。
  • 检查 HTTP 响应代码并采取行动就像实现 HTTP 协议一样。 Biztalk 将其抽象化并提供“交付通知”,该通知应该足够可信以接受消息已成功发送。例如200、201、202、204都是HTTP成功响应码。
  • 我尝试连接的第三方服务在成功时返回响应正文中的数据(代码 200),并在正文中返回 400-4nn 代码的错误消息。鉴于您提到的抽象,是否可以检索响应正文,如果可以,如何检索?
  • 我的建议是使用另一个工具,如 Fiddler 并将您的数据发布到 URL。然后为成功和失败场景保存来自 URL 的响应。我猜这些将是某种平面文件或分隔文件,或者这些响应中会有一些逻辑将它们转换为平面文件 XSD。现在,您可以拥有一个请求-响应端口,并且在响应上您可以拥有您的平面文件管道。如果您可以发布从 URL 中看到的回复,您可能会更好。
  • 谢谢建议,我明天去看看。我正在使用一个简单的测试工具来控制此时的响应。
猜你喜欢
  • 2011-09-28
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
相关资源
最近更新 更多