首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

怎的创建一个soaphead

2013-01-07 
怎样创建一个soaphead服务端要求的格式如下Security xmlns:ihttp://www.w3.org/2001/XMLSchema-instanc

怎样创建一个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;
            }
        }
    }   



在代理类的定义中加入:

private UsernameToken _token;

public UsernameToken Token
{
   get
   {
      return _token;
   }
   set
   {
      _token = value;
   }
}

webmethod上加上[System.Web.Services.Protocols.SoapHeaderAttribute("Token")]特性。

调用:

MyProxyClass client = new MyProxyClass();
UsernameToken token = new UsernameToken();
token.UserName = "123";
token.UserTokenID = "12345678";
client.Token = token;

client.MyMethod();
[解决办法]
假设java很恶心地用了非标准的web service,我们一定要去适配它吗?

建议你请它们修改为没有头的web service,或者修改为直接用最普通的http post基本通讯方式传json字符串的方式。

热点排行