RESTful 服务未按预期返回 XML
RESTful service not returning expected XML
我有一个 WCF Rest 服务,目前 returns 一个 xml 响应,如下所示。
但是,它应该以下面的格式返回,我不能让它这样输出。任何帮助获得正确输出的帮助将不胜感激。
<app:get-order-details-response xmlns:apps="http://app.com/123/abc/">
<organisation-id>123</organisation-id>
<app2app-id>Mer001</app2app-id>
<order-id>100</order-id>
<order-price>0</order-price>
<response-handler>yourapp://response/parameter1</response-handler>
<failure-response-handler>yourapp://response/parameter2</failure-response-handler>
</app:get-order-details-response>
生成当前xml的代码如下所示。是因为我要返回一个 XmlElement 吗?我已经尝试返回 XmlDocument 并更改界面中的代码来执行此操作,但这并没有解决这个问题。
public XmlElement GetOrderDetails(string organisationID, string paymentReference, int paymentType, string deviceType)
{
.....
.....
.....
XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("app:get-order-details-response", "http://app.com/123/abc/");
doc.AppendChild(root);
CreateElement(doc, root, "organisation-id", organisationID);
CreateElement(doc, root, "app2app-id", app2appID);
CreateElement(doc, root, "order-id", paymentReference;
CreateElement(doc, root, "order-price", paymentAmount);
CreateElement(doc, root, "response-handler", responseHandler);
CreateElement(doc, root, "failure-response-handler", failureResponseHandler);
return root;
}
接口:
[ServiceContract]
public interface IPaymentService
{
[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped,
Method = "GET",
UriTemplate = "/getorderdetails/v1/aa/order/{organisationID}/{paymentReference}?paymentType={paymentType}&deviceType={deviceType}")]
XmlElement GetOrderDetails(string organisationID, string paymentReference, int paymentType, string deviceType);
}
更新:
按照 Pankaj 下面的建议进行修改后,输出显示在 IE 中。但是,在针对测试工具包进行测试时,我收到一条错误消息,提示“无法找到元素 'app:get-order-details-response' 的声明。这是什么意思?
尝试更改
BodyStyle = WebMessageBodyStyle.Wrapped
至
BodyStyle = WebMessageBodyStyle.WrappedRequest
OR
BodyStyle = WebMessageBodyStyle.Bare
我有一个 WCF Rest 服务,目前 returns 一个 xml 响应,如下所示。
但是,它应该以下面的格式返回,我不能让它这样输出。任何帮助获得正确输出的帮助将不胜感激。
<app:get-order-details-response xmlns:apps="http://app.com/123/abc/">
<organisation-id>123</organisation-id>
<app2app-id>Mer001</app2app-id>
<order-id>100</order-id>
<order-price>0</order-price>
<response-handler>yourapp://response/parameter1</response-handler>
<failure-response-handler>yourapp://response/parameter2</failure-response-handler>
</app:get-order-details-response>
生成当前xml的代码如下所示。是因为我要返回一个 XmlElement 吗?我已经尝试返回 XmlDocument 并更改界面中的代码来执行此操作,但这并没有解决这个问题。
public XmlElement GetOrderDetails(string organisationID, string paymentReference, int paymentType, string deviceType)
{
.....
.....
.....
XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("app:get-order-details-response", "http://app.com/123/abc/");
doc.AppendChild(root);
CreateElement(doc, root, "organisation-id", organisationID);
CreateElement(doc, root, "app2app-id", app2appID);
CreateElement(doc, root, "order-id", paymentReference;
CreateElement(doc, root, "order-price", paymentAmount);
CreateElement(doc, root, "response-handler", responseHandler);
CreateElement(doc, root, "failure-response-handler", failureResponseHandler);
return root;
}
接口:
[ServiceContract]
public interface IPaymentService
{
[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped,
Method = "GET",
UriTemplate = "/getorderdetails/v1/aa/order/{organisationID}/{paymentReference}?paymentType={paymentType}&deviceType={deviceType}")]
XmlElement GetOrderDetails(string organisationID, string paymentReference, int paymentType, string deviceType);
}
更新:
按照 Pankaj 下面的建议进行修改后,输出显示在 IE 中。但是,在针对测试工具包进行测试时,我收到一条错误消息,提示“无法找到元素 'app:get-order-details-response' 的声明。这是什么意思?
尝试更改
BodyStyle = WebMessageBodyStyle.Wrapped
至
BodyStyle = WebMessageBodyStyle.WrappedRequest
OR
BodyStyle = WebMessageBodyStyle.Bare