3

我正在尝试使用 BizTalk 的 bLogical REST Start Kit ( http://biztalkrest.codeplex.com/ ) 将 JSON 消息接收到 BizTalk 中。

我能够成功接收消息、对其进行转换并从我的业务流程返回响应,但是当我通过 BizTalkRESTResponseHandler 将响应转换回时,HTTP Content-Type 被强制返回为“application/xml”,即使我明确将其设置为“应用程序/json”。Content-Type 通过跟踪 Fiddler 以及 SoapUI 中的请求和响应来确认。

接受:请求上的值是 'application/json'

有什么想法可以进一步追踪 Wcf-Custom 适配器堆栈以查看 Content-Type 的重置位置吗?

4

1 回答 1

0

您可以通过在 IDispatchMessageInspector 中返回消息之前添加 HttpResponseMessageProperty 来解决此问题。您可以直接在 BizTalkRESTResponseHandler IDispatchMessageInspector 中执行此操作,也可以在单独的一个中执行此操作。

要在 BizTalkRESTResponseHandler 中执行此操作,请获取源并在最后的“reply = newReply”上方的 BeforeSendReply 方法中添加以下 3 行代码。

HttpResponseMessageProperty prop = new HttpResponseMessageProperty();
newReply.Properties.Add(HttpResponseMessageProperty.Name, prop);
prop.Headers.Add("Content-Type", "application/json;charset=utf-8");

现在而不是得到:

在此处输入图像描述

你会得到这个:

在此处输入图像描述

于 2013-09-11T09:46:01.347 回答