客户端调用webService

1. 客户端编写

客户端有XFire、axis两种方式来访问Web Service 提供的服务。

前提条件:服务启动,且服务能运行(生成WSDL)。

注意:为了测试方便,现将测试类放入到同一个工程中,当然下面两种方式都可将部署到另一个新建工程中。

1.1 第一种:Xfire实现调用

1.1.1 方式一:代理工厂

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=":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();

}

}

1.1.2 方式二:代理工厂

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=" :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调用,香港服务器,网站空间,要在服务端做一些些修改。

1.2.1 第一步:加入axis所需包文件

加入Axis所需要的包文件,加入后的整个目录结构如下图所示:

1.2.2 第二步:修改 Web.xml 配置文件

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

1.2.3 第三步:加入server-config.wsdd文件并修改

1.2.4 第四步:编写客户端测试代码

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=":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("远程错误!");

}

}

}

本文出自 “吹牛皮拉潜艇推火车日飞机” 博客,请务必保留此出处

,香港虚拟主机要知道,当你一直在担心错过了什么的时候,

客户端调用webService

相关文章:

你感兴趣的文章:

标签云: