根据第三方提供的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 ...
随机推荐
- link,unlink,remove, rename函数
link函数:创建一个指向现有文件的链接的方法是使用 个人理解为cp命令 #include <unistd.h> int link( const char *existingpath, c ...
- C++注册表操作
数据结构 注册表由键(或称"项").子键(子项)和值项构成.一个键就是分支中的一个文件夹,而子键就是这个文件夹中的子文件夹,子键同样是一个键.一个值项则是一个键的当前定义,由名称. ...
- yum自动脚本
echo -e "\033[34mstop server:\033[0m" service iptables stop service NetworkManager stop ch ...
- TypeScript开发手册
返回TS学习总目录 基本类型(Basic Types) 接口(Interfaces) 类(Classes) 模块(Modules) 函数(Functions) 泛型(Generics) 常见错误(Co ...
- 设计模式之美:Flyweight(享元)
索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):使用 FlyweightFactory 管理 Flyweight 对象. 意图 运用共享技术有效地支持大量细粒度的对象. Use ...
- [Android] Android Sutdio on Surface Pro 3
Install Android Studio http://www.android-studio.org/index.php/download/androidstudio-download-baidu ...
- C#与数据库访问技术总结(七)综合示例
综合示例 说明:前面介绍了那么多,光说不练假把式,还是做个实例吧. 表:首先你要准备一张表,这个自己准备吧.我们以学生表为例. 1.ExecuteScalar方法 ExecuteScalar方法执行返 ...
- ruby正则匹配回车换行符
如果你使用/^.*$/这种正则是匹配不到回车换行符的. 所以应该像下面这么写: /^[\s\S]*$/
- FreeIconMaker - 在线创建免费和时尚的图标
在设计一个网站或 Web 应用程序时,你不能否认网页设计工具的重要性,这些工具有助于简化您的任务和完成您的项目.FreeIconMaker.com 是一个免费的在线图标制作工具,您也可以创建自己的模板 ...
- 使用轻量级ORM Dapper进行增删改查
项目背景 前一段时间,开始做一个项目,在考虑数据访问层是考虑技术选型,考虑过原始的ADO.NET.微软的EF.NH等.再跟经理讨论后,经理强调不要用Ef,NH做ORM,后期的sql优化不好做,公司 ...