java调用带有header信息的.net webService

最近遇到一个项目需要用java调用.net做的webService,由于是头一次遇到,在网上看了很多方法仍没有解决,最后才知道我要调用的这个webService还要传入头信息,不过终于是解决了,方法如下。

 

public static void main(String[] args) throws ServiceException, RemoteException{  
        try 
        {  
         //服务端url
            String endpointURL = "http://113.57.135.78/DataEngine/wsDataEngineForWebsite.asmx?wsdl";  
            Service service = new Service();
            Call call = (Call) service.createCall();  
            call.setTargetEndpointAddress(new java.net.URL(endpointURL));  
            call.setSOAPActionURI("http://tempuri.org/" + "ModifyCard");//要调用方法的url
            call.setOperationName(new QName("http://tempuri.org/", "ModifyCard"));// 设置操作的名称。  
           
            //设置头信息
            SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("http://tempuri.org/", "WSAuthHeader");  
            soapHeaderElement.setNamespaceURI("http://tempuri.org/");
            try{ 
             //设置头信息里需要的2个参数
                soapHeaderElement.addChildElement("UserName").setValue("admin");  
                soapHeaderElement.addChildElement("Password").setValue("123");  
            }catch (SOAPException e){
                e.printStackTrace();
            }
            call.addHeader(soapHeaderElement);
           
            call.setReturnType(XMLType.XSD_STRING);// 返回的数据类型
           
            //设置参数的名称与类型
            call.addParameter("cardNo", XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter("Password", XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter("NewPassword", XMLType.XSD_STRING, ParameterMode.IN);
           
            String ret = (String) call.invoke(new Object[] {"arg1","arg2","arg3"});//执行调用 arg为要传递参数的值
            System.out.println(ret.toString());//webService端返回的是String类型,所以可以在控制台输出
        }catch (Exception e){  
            e.printStackTrace();  
        }  
    }

 

另导入的java文件如下:

 

import java.rmi.RemoteException;   
import javax.xml.namespace.QName;  
import javax.xml.rpc.ParameterMode;  
import javax.xml.rpc.ServiceException;  
import javax.xml.soap.SOAPException;   
import org.apache.axis.client.Call;  
import org.apache.axis.client.Service;  
import org.apache.axis.encoding.XMLType;  
import org.apache.axis.message.SOAPHeaderElement;

你可能感兴趣的:(java调用带有header信息的.net webService)