BizTalk 发送适配器 HTTP 发布响应
Posted
技术标签:
【中文标题】BizTalk 发送适配器 HTTP 发布响应【英文标题】:BizTalk Send Adapter HTTP Post Response 【发布时间】: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 消息结构。我只是尝试执行一个帖子并检查以类似于***.com/questions/692342/… 上的 Jugglist 答案但使用 BizTalk 的方式返回的响应状态代码(和响应正文)。我认为消息或服务类型不相关。 【参考方案1】:Http 状态代码应该作为上下文属性在响应消息中可用,您可以在表达式形状中访问它。
statusCode = ResponseMessage(HTTP.ResponseStatusCode);
您的 ResponseMessage 应该是 System.Xml.XmlDocument 类型,但由于它不是真正的 Xml 文档,请确保将请求/响应端口配置为使用响应端的 PassThruReceive 管道。
【讨论】:
感谢 Brett,但是我收到一条错误消息“消息中没有与属性 'HTTP.ResponseStatusCode' 关联的值。” 为了清楚起见:我有一个编排将一个简单的 xml 消息 (如果您正在寻找消息已成功传输的一种通知(不在消息内容中),您可以在编排中设置逻辑发送端口属性,如下所示:
"Delivery Notification" = Transmitted
可以使用 Microsoft.XLANGs.BaseTypes.DeliveryFailureException 处理交付失败
【讨论】:
感谢您的回复,但我不确定其中任何一个如何让我查看/提取 http 响应状态代码。 检查 HTTP 响应代码并采取行动就像实现 HTTP 协议一样。 Biztalk 将其抽象化并提供“交付通知”,该通知应该足够可信以接受消息已成功发送。例如200、201、202、204都是HTTP成功响应码。 我尝试连接的第三方服务在成功时返回响应正文中的数据(代码 200),并在正文中返回 400-4nn 代码的错误消息。鉴于您提到的抽象,是否可以检索响应正文,如果可以,如何检索? 我的建议是使用另一个工具,如 Fiddler 并将您的数据发布到 URL。然后为成功和失败场景保存来自 URL 的响应。我猜这些将是某种平面文件或分隔文件,或者这些响应中会有一些逻辑将它们转换为平面文件 XSD。现在,您可以拥有一个请求-响应端口,并且在响应上您可以拥有您的平面文件管道。如果您可以发布从 URL 中看到的回复,您可能会更好。 谢谢建议,我明天去看看。我正在使用一个简单的测试工具来控制此时的响应。以上是关于BizTalk 发送适配器 HTTP 发布响应的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能通过 BizTalk SMTP 适配器更改正文部分的附件名称?