.net呼び出しjava xfireパブリッシュwebserviceパッケージsoapheaderヘッダ情報

2596 ワード

.netはjava xfireが発行したwebserviceを呼び出してsoapheaderヘッダ情報をカプセル化するのが面倒で、エージェントクラスコードに変更する必要があります.
JAVAサービス側検証コード
package chachaba.map.service;



import org.codehaus.xfire.MessageContext;

import org.codehaus.xfire.handler.AbstractHandler;

import org.jdom.Element;



public class AuthenticationHandler extends AbstractHandler 

{



	public void invoke(MessageContext cfx) throws Exception 

	{

		if (cfx.getInMessage().getHeader() == null) {

			throw new org.codehaus.xfire.fault.XFireFault("          ",

					org.codehaus.xfire.fault.XFireFault.SENDER);

	   }

	   Element token = cfx.getInMessage().getHeader().getChild("AuthenticationToken");

	   if (token == null) {

		   throw new org.codehaus.xfire.fault.XFireFault("            ",

				   org.codehaus.xfire.fault.XFireFault.SENDER);

	   }

	

	   String username = token.getChild("Username").getValue();

	   String password = token.getChild("Password").getValue();

	   try {

		   //        ,  yw88@ccc0c325-fe67-4cad-baab-4ad9ebb4f927        

		   if (username.equals("yw88") && password.equals("ccc0c325-fe67-4cad-baab-4ad9ebb4f927"))

			   //       

			   System.out.println("      ");

		   else

			   throw new Exception();

	   } catch (Exception e) {

		   throw new org.codehaus.xfire.fault.XFireFault("         ",

				   org.codehaus.xfire.fault.XFireFault.SENDER);

	   }

	}

}


.NET呼び出しプロセスは次のとおりです.
1.StallsServices.csなどのプロキシクラスの生成
2、エージェントクラスにSoapHeaderクラスを追加します.完全なコードは以下の通りです.
public class AuthenticationToken : SoapHeader

{

    public string Username;

    public string Password;



}


3.エージェントクラスにSoapHeaderクラスパラメータを追加し、
public AuthenticationToken Header = new AuthenticationToken();


4、メソッドに属性コードを追加する
[SoapHeader("Header")]

public void deleteInter([System.Xml.Serialization.XmlElementAttribute(IsNullable = true)] string in0)

{

    this.Invoke("deleteInter", new object[] {in0});

}


  
5、プロキシクラスのNamespaceを空に設定し、
[System.Web.Services.WebServiceBindingAttribute(Name = "StallsServiceHttpBinding", Namespace = "")]


6、クライアント呼び出しコードは以下の通りである:
StallsService client = new StallsService();

AuthenticationToken myHeader = new AuthenticationToken();

myHeader.Username = "username";

myHeader.Password = "password";

client.Header = myHeader;

client.deleteInter("9999");


OK