(一)解析第三方接口封装为对象

     最近做了一个还算可以上手的外包项目,就是解析第三方接口的数据然后展示在页面中,整个项目做下来还是有很多收获的,学到的有很多,包括xml的解析,echarts曲线的应用,video标签的应用及添加定时任务器定时刷新数据库等,耗时将近两个月,在这里先做一个简单的整理,后续还会继续完善。
     1、得到第三方给的开放接口说明文档。
           1)、接口地址:
              http://对方ip:8080/my/service/TestService?wsdl
           2)、接口安全:
            出于安全的考虑:接收到的接口消息都会检验用户名和密码,故接口都需要带Head。
           3)、接口方法:
            接口方法中都会给出参数和返回值。如:
           sendMsg:
                      参数:account String 用户登录名
                          返回值:unitId  单元UUID                   
                                         unitName 单元名称

              WSDL是Web Services Description Language的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML 语言。它的工具是wsdl2java,这时就需要用wsdl2java生成客户端代码。
              生成客户端常用的大概就是三种方式:CXF、axis2、axis,Axis2 是Axis的后续版本,是新一代的SOAP引擎。使用axis提供的工具类org.apache.axis.wsdl.WSDL2Java先生成客户端stub,然后像使用本地方法一样调用远程接口。这里我用到的是CXF,生成一大堆java文件,具体我也没怎么看明白都是什么 ,后来领导让我用axis2来生成,再后来也还是没有用到,直接问第三方人员要了两个文件进行wsdl接口实现,拉出了第三方的xml数据。

 CXF生成客户端的过程:
引用
1、下载apache-cxf-3.1.7工具
2、环境配置path及CXF-HOME路径。
3、cmd中输入wsdl2java验证是否配置成功。
4、输入命令wsdl -d +(生成代码所在目录) -client +(路径)

附录:
-d:指定生成的客户端生成  目录
-p:指定生成的客户端包名
-client:指定生成客户端调用类, 即包含main方法调用客户端方法的类
-t:为代码生成测试用例
-g:生成服务端和客户端代码
-ssi:为服务端实现代码生成接口类
2、wsdl生成xml文档
1>将URL及账户信息封装到properties文件。利用ResourceBundle调用。
Java code
?
1
2
3
4
5
config.properties:
 
uri=http: //对方ip:8080/my/service/TestService?wsdl
otherAccount=me
otherPassword= 123456
2>
Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
ClientAuthInterceptor:
 
import  org.apache.cxf.binding.soap.SoapMessage;
import  org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
import  org.apache.cxf.headers.Header;
import  org.apache.cxf.helpers.DOMUtils;
import  org.apache.cxf.interceptor.Fault;
import  org.apache.cxf.phase.Phase;
import  org.w3c.dom.Document;
import  org.w3c.dom.Element;
import  javax.xml.namespace.QName;
import  java.util.List;
 
public  class  ClientAuthInterceptor  extends  AbstractSoapInterceptor
{
     private  String    userName;
     private  String    password;
     
     public  ClientAuthInterceptor()
     {
         super (Phase.WRITE);
     }
     
     public  ClientAuthInterceptor(String userName, String password)
     {
         super (Phase.PREPARE_SEND);
         this .userName = userName;
         this .password = password;
     }
     
     public  String getUserName()
     {
         return  userName;
     }
     
     public  void  setUserName(String userName)
     {
         this .userName = userName;
     }
     
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值