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

【SSI开发总结.10】eclispe中使用XFire框架调用WebService

发布时间:2020-12-17 02:10:15 所属栏目:安全 来源:网络整理
导读:? 在SSI开发中,要求读取访问者IP所在地,需要调用WebService,比较了下AXIS和XFire,决定使用XFire开发webservice应用,以下是一个简单示例: 1.eclipse中,在工程根目录下新建一个build.xml //build.xml ?xml version="1.0"? project default="genfiles" ba
?

在SSI开发中,要求读取访问者IP所在地,需要调用WebService,比较了下AXIS和XFire,决定使用XFire开发webservice应用,以下是一个简单示例:

1.eclipse中,在工程根目录下新建一个build.xml

//build.xml

<?xml version="1.0"?>
<project default="genfiles" basedir=".">?????
<property name="lib" value="WebContent/WEB-INF/lib" />?????
<path id="myclasspath">???????????
??? <fileset dir="${lib}">?????????????????
????? <include name="*.jar" />???????????
??? </fileset>???????????
????? <pathelement location="${genfiles}" />?????
</path>?????
<property name="code_path" value="src" />?????
<property name="wsdl_path " value="http://www.260dns.cn/Services/ips.asmx?WSDL" />?????
<property name="code_package " value="com.popoann.service" />?????
<target name="genfiles" description="Generate the files">??
??? <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="myclasspath" />?????????
??? <wsgen outputDirectory="${code_path}" wsdl="${wsdl_path}" package="${code_package}" overwrite="true"/>?????
</target>
</project>

wsdl_path 填写的是某服务的WSDL描述文件地址,本例子主要是利用ANT配置文件,根据WSDL地址生成客户端相关的远程调用代码.

code_package 填写客户端代码生成时所在包

2.执行Build.xml并生成客户端代码

生成了三个文件

src/com/popoann/service/ipsClient.java //客户端引用,主要通过此类完成调用,相关类辅助

src/com/popoann/service/ipsImpl.java //相关类

src/com/popoann/service/ipsSoap.java //相关类

3.测试程序

import com.popoann.service.*;
import org.tempuri.Iptoaddress;
import org.tempuri.IptoaddressResponse;
import java.util.*;
import org.apache.xerces.dom.ElementNSImpl;

public class ipstest {
public static void main(String[] args) {
??? Iptoaddress param=new Iptoaddress(); //设置远程方法调用参数,Iptoaddress表示远程参数包实体
??? param.setIp("218.0.19.15"); //设置IP值,表示查询该IP所在地
?????? ipsClient client=new ipsClient();/ /客户端实例
?????? IptoaddressResponse res=client.getipsSoap().iptoaddress(param);//调用远程方法
?????? ArrayList result=(ArrayList)res.getIptoaddressResult().getContent();//返回结果数组对象
?????? ElementNSImpl ele=(ElementNSImpl)result.get(0);//结果是一个XML节点对象
?????? System.out.println(ele.getFirstChild().getTextContent());//输出结果
}
}

?

总结,需要用到大量XFire包,调用还是比较方便的

(编辑:李大同)

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

    推荐文章
      热点阅读