java axis調用帶有soap頭(soapheader)的.net webservice


 

使用axis調用.net帶soapheader的webservice是如何實現的,現在貼出代碼

 

 

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
  <AuthHeaderCS xmlns="http://tempuri.org/">
      <Username>string</Username>
      <Password>string</Password>
    </AuthHeaderCS>
  </soap:Header>
  <soap:Body>
    <StarTrans xmlns="http://tempuri.org/" />
  </soap:Body>
</soap:Envelope>
View Code

 

 

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;

public class aa
{
    public static void main(String[] args) throws ServiceException, RemoteException
    {
        try
        {
            // 服務端的url,需要根據情況更改。
            String endpointURL = "http://192.168.0.209:7080/DataShareWebService.asmx?wsdl";
            Service service = new Service();
            Call call = (Call) service.createCall();
            call.setTargetEndpointAddress(new java.net.URL(endpointURL));
            call.setSOAPActionURI("http://tempuri.org/" + "StarTrans");
            call.setOperationName(new QName("DataShareWebService", "StarTrans"));// 設置操作的名稱。
            // 由於需要認證,故需要設置調用的用戶名和密碼。
            SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("http://tempuri.org/", "AuthHeaderCS");
            soapHeaderElement.setNamespaceURI("http://tempuri.org/");
            try
            {
                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("op1", XMLType.XSD_STRING, ParameterMode.IN);// 參數的類型
            String ret = (String) call.invoke(new Object[] { "11111" });// 執行調用
            System.out.println(ret);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM