.net呼び出しjava xfireパブリッシュwebserviceパッケージsoapheaderヘッダ情報
2596 ワード
.netはjava xfireが発行したwebserviceを呼び出してsoapheaderヘッダ情報をカプセル化するのが面倒で、エージェントクラスコードに変更する必要があります.
JAVAサービス側検証コード
.NET呼び出しプロセスは次のとおりです.
1.StallsServices.csなどのプロキシクラスの生成
2、エージェントクラスにSoapHeaderクラスを追加します.完全なコードは以下の通りです.
3.エージェントクラスにSoapHeaderクラスパラメータを追加し、
4、メソッドに属性コードを追加する
5、プロキシクラスのNamespaceを空に設定し、
6、クライアント呼び出しコードは以下の通りである:
OK
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