【发布时间】:2015-08-09 04:26:08
【问题描述】:
我想使用 xml 来使用一个安静的 Web 服务。我必须创建这个模板才能创建一个有效的请求:
<WS_IN_GetAccountCredit xmlns="http://schemas.datacontract.org/2004/07/WcfWebService">
<GetAccountCreditParams>
<Password>String content</Password>
<UserName>String content</UserName>
</GetAccountCreditParams>
<WSIdentity>
<WS_PassWord>String content</WS_PassWord>
<WS_UserName>String content</WS_UserName>
</WSIdentity>
</WS_IN_GetAccountCredit>
我的序列化方法是这样的:
XmlSerializerNamespaces xmlNameSpace = new XmlSerializerNamespaces();
xmlNameSpace.Add("", "http://schemas.datacontract.org/2004/07/WcfWebService");
XmlSerializer xmlSerializer = new XmlSerializer(instance.GetType());
using (StringWriter textWriter = new StringWriter())
{
xmlSerializer.Serialize(textWriter, instance, xmlNameSpace); ; return textWriter.ToString();
}
我的输出如下所示:
<?xml version="1.0" encoding="utf-16"?>
<WS_IN_GetAccountCredit xmlns:xmlns="http://schemas.datacontract.org/2004/07/WcfWebService">
<WSIdentity>
<WS_UserName>String content</WS_UserName>
<WS_PassWord>String content</WS_PassWord>
</WSIdentity>
<GetAccountCreditParams>
<UserName>String content</UserName>
<Password>String content</Password>
</GetAccountCreditParams>
</WS_IN_GetAccountCredit>
如您所见,命名空间和 xml 版本的格式错误。我还找到了this、this 和this 文章,但它们都不能解决我的问题。
如何创建一个有效的请求?
【问题讨论】:
-
你能展示一下
WS_IN_GetAccountCredit的样子吗? -
是的诅咒:你在这里: public class WS_IN_GetAccountCredit { private WS_IN_WebServiceIdentity wsIdentity;私人 WS_IN_GetAccountCreditParams getAccountCreditParams;公共 WS_IN_WebServiceIdentity WSIdentity { set { this.wsIdentity = value; } 得到 { 返回 this.wsIdentity; } } 公共 WS_IN_GetAccountCreditParams GetAccountCreditParams { 设置 { this.getAccountCreditParams = value; } 得到 { 返回 this.getAccountCreditParams; } }
-
也可以使用
XmlElementsOrder属性来设置顺序。 -
但是由于这是显然一个 WCF Web 服务 - 你不能只为它创建一个 客户端 然后正常调用该方法吗WCF 客户端类上的 C# 方法?为什么需要“手工组装”XML???
-
我当然可以。但由于某些原因,我不得不将它作为一种宁静的服务来使用。
标签: c# xmlserializer