根据第三方提供的wsdl报文(axis2开发),进行的webservice应用的开发实例
接口应用名称:NgCallService
入参和出参信息
入参和出参报文信息
入参:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ROOT>
<REQUEST_METHOD type="string">getVIPCardVIPGrade</REQUEST_METHOD>
<REQUEST_INFO>
<CONTENTID type="string">14</CONTENTID>
<ID_NO type="string">13*203***66</ID_NO>
</REQUEST_INFO>
</ROOT>
出参:
<ROOT>
<RETURN_CODE type="long">0</RETURN_CODE>
<RETURN_MSG type="string">成功!</RETURN_MSG>
<DETAIL_MSG type="string">该用户的使用次数查找成功!</DETAIL_MSG>
<OUT_DATA>
<USAVLE_NUMBER type="string">0</USAVLE_NUMBER>
<VIP_NO type="string">0**301******3939</VIP_NO>
<VIP_GRADE type="string">03</VIP_GRADE>
<SERVICE_ACC>0</SERVICE_ACC>
</OUT_DATA>
</ROOT>
封装入参报文为request对象: NgCallServiceRequest
package com.sinovatech.service.NgCallService;
public class NgCallServiceRequest {
private String requestMethod;// 请求服务方法
private String contentId;// 服务类型(0:火车站服务 14:机场服务 2:SIM卡免费换卡服务)
private String idNo;
. . . . . . .
. . . . . . . 这里没有加上getter和setter方法
}
封装出参报文为response对象: NgCallService
package com.sinovatech.service.NgCallService;
public class NgCallServiceResponse {
private String returnCode;// 执行结果信息编码(0:成功,其他编码标识有错误,具体错误信息参照RETURN_MSG节点内容)
private String returnMsg;// 执行结果信息内容
private String detailMsg;// 执行结果详细信息内容
private String usavleNumber;// 剩余次数
private String vipNo;// vip用户卡号
private String vipGrade;// vip用户等级
private String serviceAcc;// 总次数
. . . . . . .
. . . . . . . 这里没有加上getter和setter方法
}
对象和报文的转换关系
package com.si***ch.service; import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element; import com.si***ch.service.NgCallService.NgCallServiceRequest;
import com.si***ch.service.NgCallService.NgCallServiceResponse;
import com.si***ch.service.s2299Query.BusiInfo;
import com.si***ch.service.s2299Query.S2299QueryRequest;
import com.si***ch.service.s2299Query.S2299QueryResponse;
import com.si***ch.service.sQUserBase.sQUserBaseRequest;
import com.si***ch.service.sQUserBase.sQUserBaseResponse; public class MyParseXML {
private static final Logger log = Logger.getLogger(MyParseXML.class);
private static StringBuffer xmlHead =null;
static{
xmlHead = new StringBuffer();
xmlHead.append("<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\" ?>").append("\n");
xmlHead.append("<ROOT>").append("\n");
} public static String parseNgCallServiceRequest2XML(NgCallServiceRequest request){
log.info("parseNgCallServiceRequest2XML=================start====================");
StringBuffer xmlRequest = new StringBuffer();
xmlRequest.append(xmlHead.toString());
if(request.getRequestMethod()!=null){
xmlRequest.append("<REQUEST_METHOD type=\"string\">"+request.getRequestMethod()+"</REQUEST_METHOD>").append("\n");
}else{
xmlRequest.append("<REQUEST_METHOD type=\"string\"></REQUEST_METHOD>").append("\n");
}
xmlRequest.append("<REQUEST_INFO>").append("\n"); if(request.getContentId()!=null){
xmlRequest.append("<CONTENTID type=\"string\">"+request.getContentId()+"</CONTENTID>").append("\n");
}else{
xmlRequest.append("<CONTENTID type=\"string\"></CONTENTID>").append("\n");
} if(request.getIdNo()!=null){
xmlRequest.append("<ID_NO type=\"string\">"+request.getIdNo()+"</ID_NO>").append("\n");
}else{
xmlRequest.append("<ID_NO type=\"string\"></ID_NO>").append("\n");
}
xmlRequest.append("</REQUEST_INFO>").append("\n").append("</ROOT>").append("\n");
log.info("parseNgCallServiceRequest2XML=================end====================");
return xmlRequest.toString();
} /**
* @throws DocumentException
*
*/
public static NgCallServiceResponse parseNgCallServiceResponse(String xml) throws DocumentException{
log.info("parseNgCallServiceResponse=================start====================");
Document doc = DocumentHelper.parseText(xml);
NgCallServiceResponse response = new NgCallServiceResponse();
Element root = doc.getRootElement();
String returnCode = root.elementText("RETURN_CODE");
String returnMsg = root.elementText("RETURN_MSG");
String detailMsg = root.elementText("DETAIL_MSG");
if(returnCode!=null&&(returnCode.equals("0")||returnCode.equals("0"))){
Element outData = root.element("OUT_DATA");
String usavleNumber = outData.elementText("USAVLE_NUMBER");
String vipNo = outData.elementText("VIP_NO");
String vipGrade = outData.elementText("VIP_GRADE");
String serviceAcc = outData.elementText("SERVICE_ACC");
response.setUsavleNumber(usavleNumber);
response.setVipNo(vipNo);
response.setVipGrade(vipGrade);
response.setServiceAcc(serviceAcc);
}
response.setReturnCode(returnCode);
response.setReturnMsg(returnMsg);
response.setDetailMsg(detailMsg);
log.info("parseNgCallServiceResponse=================end====================");
return response;
} public static void main(String[] args) throws DocumentException { //测试request转为xml /*NgCallServiceRequest request = new NgCallServiceRequest();
request.setRequestMethod("getCustFreeAirNumVIPCardVIPGrade");
request.setContentId("14");
request.setIdNo("13120******");
System.out.println(parseNgCallServiceRequest2XML(request));*/ StringBuffer response = new StringBuffer();
response.append(xmlHead);
response.append("<RETURN_CODE type=\"long\">0</RETURN_CODE>").append("<RETURN_MSG type=\"string\">成功!</RETURN_MSG>")
.append("<DETAIL_MSG type=\"string\">该用户的使用次数查找成功!</DETAIL_MSG>")
.append("<OUT_DATA><USAVLE_NUMBER type=\"string\">0</USAVLE_NUMBER>").append("<VIP_NO type=\"string\">0413013******939</VIP_NO>")
.append("<VIP_GRADE type=\"string\">03</VIP_GRADE>").append("<SERVICE_ACC type=\"string\">0</SERVICE_ACC>")
.append("</OUT_DATA></ROOT>");
NgCallServiceResponse res = parseNgCallServiceResponse(response.toString());
StringBuffer out = new StringBuffer();
out.append(res.getReturnCode()+"||"+res.getReturnMsg()+"||"+res.getDetailMsg()+"||"+res.getUsavleNumber()+"||"+res.getVipNo()+"||"+res.getVipGrade()+"||"+res.getServiceAcc());
System.out.println(out.toString());
}
}
根据wsdl的地址生成axis2的客户端
进入到axis2安装目录的bin目录 cd /app/weblogic/axis2-1.4.1/bin 执行命令生成axis2客户端(linux环境) ./wsdl2java.sh -uri http://10.*.*.*:5*00/esbWS/services/ NgCallService?wsdl -o /app/weblogic/ws-java/ NgCallService / 生成的客户端如下: NgCallServiceCallbackHandler.java 和 NgCallServiceStub.java
在jsp页面中通过iframe调用struts1的action
<iframe src="${pageContext.request.contextPath}/myservice/NgCallServiceInfo.do" name="iframe" frameborder="0" width="730" height="290" class="">
</iframe>
Jsp页面中要访问的Struts1中的起始Action方法
public ActionForward NgCallServiceInfo(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
log.info("NgCallServiceAction 查看查询参数开始..................");
// 获得登录用户信息,没有登录提示用户需要重新登录
UserBean user = (UserBean) request.getSession().getAttribute("USER_INFO");
//这里是做测试,写一个固定的号码:13682672166
NgCallServiceResponse ngCallServiceResponse1 = NgCallService("13682672166");
/*if (user != null) {
NgCallServiceResponse ngCallServiceResponse = NgCallService(user.getMsisdn());
if(ngCallServiceResponse!=null){
request.setAttribute("trainServiceAcc", ngCallServiceResponse.getServiceAcc());
request.setAttribute("trainUsavleNumber", ngCallServiceResponse.getUsavleNumber());
}
}else {
request.setAttribute("usernologin", "nologin");
}
log.info("NgCallServiceAction 查看查询参数结束..................");*/
if(ngCallServiceResponse1!=null){
log.info("ngCallServiceResponse1.getDetailMsg() "+ngCallServiceResponse1.getDetailMsg());
log.info("ngCallServiceResponse1.getReturnCode() "+ngCallServiceResponse1.getReturnCode());
request.setAttribute("msg",ngCallServiceResponse1.getDetailMsg());
}
return mapping.findForward("myservice");
} public NgCallServiceResponse NgCallService(String idNo){
NgCallServiceRequest request=new NgCallServiceRequest();
request.setRequestMethod("getVIPCardVIPGrade");
request.setContentId("14"); //0:火车站服务 14:机场服务 2:SIM卡免费换卡服务
request.setIdNo(idNo);
NgCallServiceResponse response = NgCallServiceInfo(request);
//0时表示成功
if(response != null && response.getReturnCode().equals("0")){
return response;
}
return null;
} public static NgCallServiceResponse NgCallServiceInfo(NgCallServiceRequest request){
log.info("======查询机场火车站sim卡剩余次数的服务 NgCallServiceInfo start=========");
String xml="";
NgCallServiceResponse response = null;
//下面的语句是读取配置文件中的axis2接口的url
String requestUrl=GlobalConfig.getProperty("sys.boss","NgCallServiceURL");
try {
xml = MyParseXML.parseNgCallServiceRequest2XML(request);
log.info("查询机场火车站sim卡剩余次数的服务(传入参数):"+xml);
log.info("requestUrl:"+requestUrl);
NgCallServiceStub stub = new NgCallServiceStub(requestUrl);
NgCallServiceStub.CallService call=new NgCallServiceStub.CallService();
call.setPin(xml); com.sitech.ws.NgCallServiceStub.CallServiceResponse response2;
response2 = stub.callService(call);
xml=response2.get_return();
log.info("查询机场火车站sim卡剩余次数的服务 接口(输出结果):"+xml);
response = MyParseXML.parseNgCallServiceResponse(xml);
} catch (Exception e) {
log.info(e);
}
log.info("======查询机场火车站sim卡剩余次数的服务 接口 NgCallServiceInfo end=========");
return response;
}
调用接口输出的报文信息
<?xml version="1.0" encoding="GBK"?>
<ROOT>
<RETURN_CODE type="long">0</RETURN_CODE>
<RETURN_MSG type="string">成功!</RETURN_MSG>
<DETAIL_MSG type="string">该用户的机场服务使用次数查找成功!</DETAIL_MSG>
<OUT_DATA>
<USAVLE_NUMBER type="string">0</USAVLE_NUMBER>
<VIP_NO type="string">0*130********688</VIP_NO>
<VIP_GRADE type="string">02</VIP_GRADE>
</OUT_DATA>
</ROOT>
根据第三方提供的wsdl报文(axis2开发),进行的webservice应用的开发实例的更多相关文章
- WebService学习总结(四)——调用第三方提供的webService服务
http://www.cnblogs.com/xdp-gacl/p/4260627.html 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他 ...
- WebService-调用第三方提供的webService服务
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...
- WebService学习--(四)调用第三方提供的webService服务
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...
- WebService学习总结——调用第三方提供的webService服务
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据. 气象中心的管理系统将收 ...
- WebService学习总结(三)--调用第三方提供的webService服务
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取电子邮箱验证和查询火车时刻表和天气预报 ...
- 根据wsdl,axis2工具生成客户端代码
根据wsdl,axis2工具生成客户端代码 步骤: 1,下载axis2版本http://axis.apache.org/axis2/java/core/download.html 2,下载完成后解压, ...
- 通用的调用WebService的两种方法。(调用别人提供的wsdl)(转)
转载自:http://blog.sina.com.cn/s/blog_65933e020101incz.html1.调用WebService的Client端采用jax-ws调用WebService:流 ...
- Android 开发笔记 “调用WebService”
WebService是一种基于SOAP协议的远程调用标准,通过webservice可以将不同操作系统平台.不同语言.不同技术整合到一块.在Android SDK中并没有提供调用WebService的库 ...
- 第六模块:WEB框架开发 第1章·Django框架开发1~50
01-Django基础介绍 02-Web应用程序1 03-Web应用程序2 04-http请求协议1 05-http请求协议2 06-http协议之响应协议 07-wsgire模块1 08-wsgir ...
随机推荐
- 直接请求URL调用 axis webservices
假设 http://127.0.0.1/services/Services?wsdl 有名称为 login 方法,且参数为 name , pwd 则,URL请求如下 http://127.0.0.1/ ...
- SQL Develop SSH远程连接
目前碰到了本机无法直接连接数据库服务器,然后mac上可以选择的oracle客户端又很少,直到知道了可以ssh远程到跳板机上,然后进行连接. 在跳板机上输入命令如下: ssh -L 0.0.0.0:65 ...
- azure存储压测的问题(农码主观意识太强被坑了)
由于公司想把部份业务迁到windowsazure,主要是应用winodwsazure的存储;在方案中为了体现存储的可靠性所以对winodwsazure存储进行了一系列的测试.但在读取压力测试环节中发现 ...
- Docker学习笔记整理
Docker接触有一段时间了,但是对于Docker的使用可以说是一点不会.现在要在Docker上部署基于Angular开发的页面.只能一点点积累查找的资料,顺手整理一下,方便后面的回顾. 其中用到的资 ...
- VPS CentOS-6 下 LNMP HTTP服务器的搭建
VPS CentOS-6 下 LNMP HTTP服务器的搭建 前言 恢复更新后的第一篇博文, 前段时间由于各种理由, 把博客更新给宕掉了, 个人独立博客的开发也搁浅了, 现在随着工作的逐步稳定, 决心 ...
- Mac下修改环境变量
Mac下修改环境变量 如果使用默认Bash, 首先修改 ~/.bash_profile 文件,添加文件路径,比如: export PATH=~/bin:/usr/local/bin/node:~/Do ...
- Windows 10四大版本区别详解:家庭版, 专业版, 企业版和教育版
Windows 10有四个基本版本:Windows 10 家庭版, Windows 10 专业版, Windows 10 企业版, 和Windows 10 教育版(这是Windows家族的新成员).以 ...
- Linux系列笔记 - 用户以及用户组命令
一.前言 这一系列的随笔笔记,并不是详细的说明的命令的原理,只是简单的记录, 以备后期的查看以及复习 二.直接输入命令问题 有时候,我们在用 useradd groupadd等命令时,直接在终端输入的 ...
- phpstudy 安装选择,iis+php组合,如何设置伪静态
如题. 找了半天,终于找到解决方案了. 需要在服务器上安装 Url rewrite 组件. 服务器是64位则安装:rewrite_2.0_rtw_x64.exe 然后添加 web.config配置文件 ...
- HTTP协议之chunk编码(分块传输编码
Transfer-Encoding: chunked 表示输出的内容长度不能确定,普通的静态页面.图片之类的基本上都用不到这个. 但动态页面就有可能会用到,但我也注意到大部分asp,php,asp.n ...