怎样创建一个soaphead
服务端要求的格式如下
<Security xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<UsernameToken>
<Username>123</Username>
<UserTokenID>12345678</UserTokenID>
</UsernameToken>
</Security>
用C#定义了类
public class UsernameToken
{
public string Username;
public string UserTokenID;
}
请教如何创建soaphead
[解决办法]
不会吧,msdn里没有说命名空间为空就只能创建字符串,试了下,好像也可以为对象。
另外试试这个:
先生成代理类,假设是Reference.cs。
打开文件,在类定义的前面手工添加:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.4927")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/")] [System.Xml.Serialization.XmlRootAttribute(Namespace="http://tempuri.org/", IsNullable=false)] public partial class UserNameToken : System.Web.Services.Protocols.SoapHeader { private string _Username; private string _UserTokenID; private System.Xml.XmlAttribute[] anyAttrField; /// <remarks/> public string Username { get { return this._Username; } set { this._Username= value; } } /// <remarks/> public string UserTokenID{ get { return this._UserTokenID; } set { this._UserTokenID= value; } } /// <remarks/> [System.Xml.Serialization.XmlAnyAttributeAttribute()] public System.Xml.XmlAttribute[] AnyAttr { get { return this.anyAttrField; } set { this.anyAttrField = value; } } }
[解决办法]
假设java很恶心地用了非标准的web service,我们一定要去适配它吗?
建议你请它们修改为没有头的web service,或者修改为直接用最普通的http post基本通讯方式传json字符串的方式。