加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

客户端调用webService

发布时间:2020-12-17 01:15:36 所属栏目:安全 来源:网络整理
导读:1. 客户端编写 客户端有XFire、axis两种方式来访问Web Service 提供的服务。 前提条件:服务启动,且服务能运行(生成WSDL)。 注意:为了测试方便,现将测试类放入到同一个工程中,当然下面两种方式都可将部署到另一个新建工程中。 ? 1.1 第一种:Xfire 实

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

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=" 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调用,要在服务端做一些些修改。
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="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("远程错误!");
?????? }
?
??? }
?
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读