更改 wCF 中响应消息的 XML 格式



与我之前的帖子相关

将响应结果作为数组而不是 Web 服务中的对象获取

我写了一个网络服务,服务的响应消息如下

s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header />
<s:Body>
<signOnResponse xmlns="http://tempuri.org/">
<signOnResult xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:string>NA</a:string>
<a:string>NA</a:string>
<a:string>NA</a:string>
<a:string>10</a:string>
</signOnResult>
</signOnResponse>
</s:Body>
</s:Envelope>

我需要更改响应,如下所示

s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header />
<s:Body>
<signOnResponse xmlns="http://tempuri.org/">
<signOnResult>NA</signOnResult>
<signOnResult>NA</signOnResult>
<signOnResult>NA</signOnResult>
<signOnResult>10</signOnResult>
</signOnResponse>
</s:Body>
</s:Envelope>

我编写的 web 方法返回字符串数组。

为了获得对我首选结构的响应,我正在研究是否可以更改 XML 序列化的格式以给出响应。但我找不到合适的解决方案。我也尝试实现IClientMessageInspector

注意:用php编写的客户端可以读取不在字符串对象下的XML结构。 它只能读取下面的XML。并且无法对客户端代码进行任何更改。

s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header />
<s:Body>
<signOnResponse xmlns="http://tempuri.org/">
<signOnResult>NA</signOnResult>
<signOnResult>NA</signOnResult>
<signOnResult>NA</signOnResult>
<signOnResult>10</signOnResult>
</signOnResponse>
</s:Body>
</s:Envelope>

提前致谢

你的响应类是什么样的?

试试这个:

[XmlRoot(ElementName="signOnResponse", Namespace="http://tempuri.org/")]
public class SignOnResponse {
[XmlElement(ElementName="signOnResult", Namespace="http://tempuri.org/")]
public List<string> SignOnResult { get; set; }
[XmlAttribute(AttributeName="xmlns")]
public string Xmlns { get; set; }
}

相关内容

  • 没有找到相关文章

最新更新