接口应用名称: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应用的开发实例的更多相关文章

  1. WebService学习总结(四)——调用第三方提供的webService服务

    http://www.cnblogs.com/xdp-gacl/p/4260627.html 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他 ...

  2. WebService-调用第三方提供的webService服务

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...

  3. WebService学习--(四)调用第三方提供的webService服务

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...

  4. WebService学习总结——调用第三方提供的webService服务

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据. 气象中心的管理系统将收 ...

  5. WebService学习总结(三)--调用第三方提供的webService服务

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取电子邮箱验证和查询火车时刻表和天气预报 ...

  6. 根据wsdl,axis2工具生成客户端代码

    根据wsdl,axis2工具生成客户端代码 步骤: 1,下载axis2版本http://axis.apache.org/axis2/java/core/download.html 2,下载完成后解压, ...

  7. 通用的调用WebService的两种方法。(调用别人提供的wsdl)(转)

    转载自:http://blog.sina.com.cn/s/blog_65933e020101incz.html1.调用WebService的Client端采用jax-ws调用WebService:流 ...

  8. Android 开发笔记 “调用WebService”

    WebService是一种基于SOAP协议的远程调用标准,通过webservice可以将不同操作系统平台.不同语言.不同技术整合到一块.在Android SDK中并没有提供调用WebService的库 ...

  9. 第六模块: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 ...

随机推荐

  1. 基于注解的DWR使用

    dwr3.0支持使用注解,如果不喜欢配置dwr.xml文件,注解是个不错的方法,简单快捷. 步骤如下: 1.配置web.xml文件,需要在DwrServlet里加classes初始化参数: <i ...

  2. springmvc controller junit 测试

    第一次搭建SSM框架,整合SpringMVC完成后进行Controller测试,找资料并解决问题. 下图是我的完整目录: 1 建立UserController类 代码清单 1-1:UserContro ...

  3. 使用MyBatis Generator自动创建代码

    SSM框架--使用MyBatis Generator自动创建代码 1. 目录说明 使用自动生成有很多方式,可以在eclipse中安装插件,但是以下将要介绍的这种方式我认为很轻松,最简单,不需要装插件, ...

  4. alt属性

    也被称为alt text, 是当图片无法加载时显示的替代文本.alt属性对于盲人或视觉损伤的用户理解一幅图片中所描绘的内容非常重要,搜索引擎也会搜索alt属性. 简而言之,每一张图片都应该有一个alt ...

  5. (light OJ 1005) Rooks dp

    http://www.lightoj.com/volume_showproblem.php?problem=1005        PDF (English) Statistics Forum Tim ...

  6. hadoop部署中遇到ssh设置的问题

    尽管hadoop和一些培训视频课程上讲分布式部署比较详细,但是在部署时仍遇到了一些小问题,在此mark一下: 1.linux的namenode主机上安装了ssh,也启动了ssh,并且执行了: /etc ...

  7. Dynamic CRM 2013学习笔记(二十三)CRM JS智能提示(CRM 相关的方法、属性以及页面字段),及发布前调试

    我们知道在CRM的js文件里引用XrmPageTemplate.js后,就可以实现智能提示,但每个js文件都引用太麻烦了,其实可以利用vs的功能让每个js文件自动实现智能提示CRM的js: 另外,我们 ...

  8. solr与.net系列课程(七)solr主从复制

    solr与.net系列课程(七)solr主从复制    既然solr是解决大量数据全文索引的方案,由于高并发的问题,我们就要考虑solr的负载均衡了,solr提供非常简单的主从复制的配置方法,那么下面 ...

  9. [自娱自乐] 4、超声波测距模块DIY笔记(四)——终结篇·基于C#上位机软件开发

    前言 上一节我们已经基本上把超声波硬件的发射和接收模块全部做好了,接下来我们着手开发一个软硬结合的基于C#的平面定位软件! 目录 一.整体思路 二.效果提前展示 2-1.软件部分展示 2-2.硬件部分 ...

  10. [WinAPI] API 3 [获取系统目录,并保存在文件里]

    /* 获取系统目录,并保存在文件里 [peoject->set->link->project chose->subsystem:console] */ #include< ...