公司是做物联网的 目前手里负责一个项目(山东物联网后勤资产管理系统)
这个系统需要跟手持机(就是用手拿着录入东西的机器,录入方式是扫描(就像wifi发出信号一样扇形扫描))
同步数据,实施人员用手持机在现场录入资产之前需要向后勤系统调用一些基础数据,而录入完之后后勤系统又需要向手持机同步最新的资产信息 于是用到了webService
这里只写下服务端正文:
这里是方法接口 上图中最后一行方法三个参数 是我准备修改xml的方式以json的格式返回数据做的测试(因为xmlge要来回解析所以准备换成json,在此可忽略不记)
在此贴一个实现方法 改方法属于上图中的DataExchangeServiceImpl类
// 楼宇结构
@SuppressWarnings("unchecked")
public String getLouyjg(String xmlString) {
StringBuffer result = new StringBuffer();
result.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
result.append("<returnval code=\"");
String code = "ok";// 状态
String desc = "";// 问题描述
int size = 0;// 每次传输记录大小
String startIndex = "";
String endIndex = "";
String corpid = "";
try {
doc = sb.build(new ByteArrayInputStream(xmlString.getBytes()));
Element root = doc.getRootElement();// 获取根节点
startIndex = root.getAttribute("startIndex").getValue();// 起始
endIndex = root.getAttribute("endIndex").getValue();// 结束
size = Integer.parseInt(endIndex) - Integer.parseInt(startIndex)
+ 1;
corpid = root.getAttribute("corpId").getValue();// 单位ID
} catch (JDOMException e) {
code = "error";
desc = "xml格式错误";
e.printStackTrace();
} catch (IOException e) {
code = "error";
desc = "转化输出流错误";
e.printStackTrace();
} finally {
result.append(code);
result.append("\" desc=\"");
result.append(desc);
result.append("\">");
}
try {
map = new HashMap();
map.put("bgrow", Integer.parseInt(startIndex) - 1);
map.put("rows", Integer.parseInt(endIndex));
map.put("corpid", corpid);
System.out.println(map.toString());
list = SqlMap.getSqlMap().queryForList(
"WEB_SERVICE.queryListPageForWeb_sys_louyjg", map);
int count = list.size();
result.append("<count>" + count + "</count>");
for (int i = 0; i < list.size(); i++) {
result.append("<louyjgnode>");
Map m = (Map) list.get(i);
result.append("<fangjid>" + (String) m.get("FANGJID")
+ "</fangjid>");
result.append("<fangjh>" + (String) m.get("FANGJH")
+ "</fangjh>");
result.append("<fangjmc>" + (String) m.get("FANGJMC")
+ "</fangjmc>");
result.append("<loucid>" + (String) m.get("LOUCID")
+ "</loucid>");
result.append("<loucmc>" + (String) m.get("LOUCMC")
+ "</loucmc>");
result.append("<louyid>" + (String) m.get("LOUYID")
+ "</louyid>");
result.append("<louymc>" + (String) m.get("LOUYMC")
+ "</louymc>");
result.append("</louyjgnode>");
}
} catch (SQLException e) {
System.out.println("数据库查询失败");
e.printStackTrace();
}
result.append("</returnval>");
// System.out.println(result.toString());
return result.toString();
}
服务类写好了 下面是在xfire引擎中发布web服务 先贴下结构
下面是xfire详细配置文件
注意:忘记了在什么情况下 改配置文件会出现一个错误(错误也忘记是啥错误了emmmmm )
解决方式把xmlns="http://xfire.codehaus.org/config/1.0" 写到service标签下就好了 每发一个服务就写一次!
完事在web.xml中将服务公布出去 这样就可以用上面的连接访问了
服务端完事了 下面写了个客户端做个测试 客户端就一个main方法
可以看到上图中传入的其实也是一个xml 这样服务端需要对这个xml进行解析 导致了写了很长的代码 而换成json则不需要了
(使用fastjson-1.2.9.jar已经写出了json格式)会在后期记录
下面是返回的xml格式的数据
<?xml version="1.0" encoding="UTF-8" ?>
<returnval code="ok" desc="">
<count>11</count>
<louyjgnode>
<fangjid>502849EB502849EBC330AFA0FCA2FB00</fangjid>
<fangjh>1037</fangjh>
<fangjmc>国网企协,会议室,综合处</fangjmc>
<loucid>0500067</loucid>
<loucmc>10</loucmc>
<louyid>0500001</louyid>
<louymc>办公楼A座</louymc>
</louyjgnode>
<louyjgnode>
<fangjid>5BA6A5B75BA6A5B72A371ADC5E7CC43B</fangjid>
<fangjh>1022</fangjh>
<fangjmc>实物阅览室</fangjmc>
<loucid>0500067</loucid>
<loucmc>10</loucmc>
<louyid>0500001</louyid>
<louymc>办公楼A座</louymc>
</louyjgnode>
<louyjgnode>
<fangjid>6825EAB36825EAB38E3A238D6A2258D1</fangjid>
<fangjh>3410</fangjh>
<fangjmc>接待室</fangjmc>
<loucid>0500321</loucid>
<loucmc>34</loucmc>
<louyid>0500001</louyid>
<louymc>办公楼A座</louymc>
</louyjgnode>
<louyjgnode>
<fangjid>6F26DF676F26DF678FA039FD4923F649</fangjid>
<fangjh>1032</fangjh>
<fangjmc>会议室</fangjmc>
<loucid>0500067</loucid>
<loucmc>10</loucmc>
<louyid>0500001</louyid>
<louymc>办公楼A座</louymc>
</louyjgnode>
<louyjgnode>
<fangjid>73203E7B73203E7B742E11CB383FA242</fangjid>
<fangjh>1016</fangjh>
<fangjmc>仓库</fangjmc>
<loucid>0500067</loucid>
<loucmc>10</loucmc>
<louyid>0500001</louyid>
<louymc>办公楼A座</louymc>
</louyjgnode>
<louyjgnode>
<fangjid>73343A8173343A81A421C04D66A16659</fangjid>
<fangjh>1026</fangjh>
<fangjmc>会议室</fangjmc>
<loucid>0500067</loucid>
<loucmc>10</loucmc>
<louyid>0500001</louyid>
<louymc>办公楼A座</louymc>
</louyjgnode>
<louyjgnode>
<fangjid>78392B2B52BC5FF5EB27F8B2F03D463C</fangjid>
<fangjh>3208</fangjh>
<fangjmc>综合处</fangjmc>
<loucid>0500303</loucid>
<loucmc>32</loucmc>
<louyid>0500001</louyid>
<louymc>办公楼A座</louymc>
</louyjgnode>
<louyjgnode>
<fangjid>8435C1A18435C1A1B6B953C3DE39692C</fangjid>
<fangjh>833</fangjh>
<fangjmc>机房</fangjmc>
<loucid>0500048</loucid>
<loucmc>8</loucmc>
<louyid>0500001</louyid>
<louymc>办公楼A座</louymc>
</louyjgnode>
<louyjgnode>
<fangjid>88482947035E4F1ABFF969E56646A352</fangjid>
<fangjh>工作间</fangjh>
<fangjmc>工作间</fangjmc>
<loucid>620C0F6C960245448B85DB5AB36BD451</loucid>
<loucmc>3</loucmc>
<louyid>B7DDDC74CADE4CD39A5D892D66DBE0E5</louyid>
<louymc>文印中心</louymc>
</louyjgnode>
<louyjgnode>
<fangjid>8AA681BF8AA681BF856212458EB2D29F</fangjid>
<fangjh>218</fangjh>
<fangjmc>接待室</fangjmc>
<loucid>0500007</loucid>
<loucmc>2</loucmc>
<louyid>0500001</louyid>
<louymc>办公楼A座</louymc>
</louyjgnode>
<louyjgnode>
<fangjid>8a8137684bcff8fb014c1100b44e3046</fangjid>
<fangjh>3207</fangjh>
<fangjmc>主任</fangjmc>
<loucid>0500303</loucid>
<loucmc>32</loucmc>
<louyid>0500001</louyid>
<louymc>办公楼A座</louymc>
</louyjgnode>
</returnval>