客戶端調用webService

1. 客戶端編寫java

客戶端有XFire、axis兩種方式來訪問Web Service 提供的服務。
前提條件:服務啓動,且服務能運行(生成WSDL)。
注意:爲了測試方便,現將測試類放入到同一個工程中,固然下面兩種方式均可將部署到另外一個新建工程中。
 
1.1 第一種:Xfire實現調用

package com.smt.service.test;
 
import java.net.MalformedURLException;
 
import org.codehaus.xfire.XFire;
import org.codehaus.xfire.XFireFactory;
 
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
 
import com.smt.service.IBankingService;
 
/**********************************************************
 *
 * 功能描述: </br></br>
 *
 * 做者: chenab </br></br>
 *
 * 建立時間: 2011-7-14 下午05:24:47</br></br>
 *
 * 版本號:V1.0 </br></br>
 **********************************************************/
public class clientXFire {
    private static final String urls="http://192.168.7.177:8088/testXFire/services/BankingService";
    private void testService(){
       try {
       Service serviceModel = new ObjectServiceFactory().create(IBankingService. class);
       serviceModel = new ObjectServiceFactory().create(IBankingService. class);
       XFire xFire = XFireFactory.newInstance().getXFire();
       XFireProxyFactory factory = new XFireProxyFactory(xFire);
       IBankingService service = (IBankingService)factory.create(serviceModel, urls);
       service.transferFunds("你好");
       } catch (MalformedURLException e) {
           System. out.println("錯誤!");
           e.printStackTrace();
       }
 
    }
 
    public static void main(String[] args) throws MalformedURLException {
       clientXFire c = new clientXFire();
       c.testService();
    }
}

package com.smt;
 
import java.net.MalformedURLException;
import java.net.URL;
 
import org.codehaus.xfire.client.Client;
import org.w3c.dom.Document;
 
/**********************************************************
 *
 * 功能描述: </br></br>
 *
 * 做者: chenab </br></br>
 *
 * 建立時間: 2011-7-16 下午05:14:25</br></br>
 *
 * 版本號:V1.0 </br></br>
 **********************************************************/
public class XFireClient {
    private static final String urls=" http://192.168.0.3:3001/smart_webservice/services/SmtDocService?wsdl ";
 
    public static void main(String[] args) throws MalformedURLException, Exception {
       Client client = new Client( new URL( urls));
       Object[] xml = client.invoke("findSrcDoc",new Object[]{1L});
       Document doc = (Document)xml[0];
       System. out.println(doc.getDocumentElement().getTextContent());
    }
}

 
1.2 第二種:axis實現調用
因爲服務端是用Xfire寫的,現用axis調用,要在服務端作一些些修改。
加入Axis所須要的包文件,加入後的整個目錄結構以下圖所示:
 

目錄結構

 

在web.xml中加入基本Servlet 的 AxisServlet, 以下所示:
  web.xml 配置
web.xml 配置
 

 
server-config.wsdd 文件修改
server-config.wsdd 文件修改
 

package com.smt.service.test;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
 
import javax.xml.rpc.ServiceException;
 
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
 
/**********************************************************
 *
 * 功能描述: </br></br>
 *
 * 做者: chenab </br></br>
 *
 * 建立時間: 2011-7-14 下午05:48:31</br></br>
 *
 * 版本號:V1.0 </br></br>
 **********************************************************/
public class clientAxis {
    private static final String urls="http://192.168.7.177:8088/testXFire/services/BankingService";
    public static void main(String[] args) {
       try {
           /*
            * Banking是webservice在services.xml註冊的名字
            */
           Service service = new Service();
           Call call = (Call) service.createCall();
           call.setTargetEndpointAddress( new java.net.URL( urls));
 
           // 因爲須要認證,故須要設置調用的用戶名和密碼。
           // call.getMessageContext().setUsername("sophia");
           // call.getMessageContext().setPassword("sophia");
 
           /*
            * 調用service的方法名
            */
           call.setOperationName("transferFunds");
           /*
            * invoke方法的參數是Object數組,該數組元素個數與方法參數一致
            */
           String translateText = (String) call.invoke( new Object[] { "hello" });
           System. out.println(translateText);
       } catch (ServiceException e) {
           e.printStackTrace();
           System. out.println("Service 獲取 Call對象失敗!");
       } catch (MalformedURLException e) {
           e.printStackTrace();
           System. out.println("new java.net.URL(url)錯誤!");
       } catch (RemoteException e) {
           e.printStackTrace();
           System. out.println("遠程錯誤!");
       }
 
    }
 
}
相關文章
相關標籤/搜索