2012-11-14 32 views
2

我有一個BizTalk 2010項目,其中包含需要製作HTTP發佈的業務流程,然後檢查狀態碼和響應正文以確定下一個操作過程。BizTalk發送適配器HTTP發佈響應

我可以配置編排和端口來製作HTTP Post,但我無法收到回覆。

我應該使用發送/接收端口還是關聯?

我應該爲響應使用什麼模式(我相信響應是標準http響應:http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6)。

+0

當你說HTTP post時,是指將XML發送到SOAP服務,或者POX或JSON WebAPI調用或MVC控制器操作等? – StuartLC

+0

它不是xml,它是類似於EDI的結構化文本。 – Matt

+0

@Matt你可以發佈EDI消息結構 – MIkCode

回答

1

如果你正在尋找一種通知(而不是在消息的內容),該消息已被成功發送,您可以在業務流程設置的邏輯發送端口屬性,如下所示:

"Delivery Notification" = Transmitted 

可以使用Microsoft.XLANGs.BaseTypes.DeliveryFailureException來處理投遞失敗。

+0

感謝您的迴應,但我我不確定這些中的任何一個將如何讓我查看/提取http響應狀態碼。 – Matt

+0

檢查HTTP響應代碼並採取行動就像實施HTTP協議。Biztalk突出了這一點,並提供了「交付通知」,該通知應該足以可信地接受郵件已成功發送。對於例如200,201,202,204都是HTTP成功響應碼。 – user1826905

+0

我嘗試連接的第三方服務返回成功時的響應正文(代碼200)中的數據以及400-4nn代碼正文中的錯誤消息。鑑於你提到的抽象,是否有可能檢索響應體,如果是的話如何? – Matt

0

Http狀態碼應作爲上下文屬性在響應消息上可用,您可以在「表達式」形狀中訪問該屬性。

statusCode = ResponseMessage(HTTP.ResponseStatusCode); 

你ResponseMessage應該System.Xml.XmlDocument類型的,但它不會是一個真正的XML文檔,確保請求/響應端口被配置爲使用在響應側PassThruReceive管道。

+0

感謝Brett,但是我收到一個錯誤:「沒有任何關聯的值消息中屬性'HTTP.ResponseStatusCode'。「 – Matt

+0

僅供參考:我有一個編排發送一個簡單的xml消息(測試)到發送 - 接收端口。請求消息類型與簡單消息的模式匹配,並將發送管道配置爲XMLTransmit。響應消息類型是System.Xml.XMLDocument,接收管道被配置爲PassThruReceive。接收形狀​​後,我有一個表達式形狀與代碼將HTTP.ResponseStatusCode寫入事件日誌。發送端口是HTTP類型的。 – Matt

+0

我已經取得了一些進展;在接收端口上使用自定義管道組件使我能夠看到響應主體。但是,狀態碼和響應說明不包含在內。這也具有限制,即只有成功的消息(狀態碼200)纔會導致產生響應。 – Matt