webservice写接口供第三方调用

继承类以及继承实现父类方法

public class FileCountParse extends AbstractParse {
    public FileCountParse(Document doc) {
        super(doc);
        // TODO Auto-generated constructor stub
    }
    .......... 
}

获取传给接口的值

        Element rootElement = this.doc.getRootElement();
        //获取当前页
        Element startPageElement = rootElement.getChild("startPage");
        startPage = startPageElement.getValue();

通过获取的参数在本系统获取响应的数据,并对数据进行封装

  result += "";
                    //组织名标识
                    result += "" + orgName + "";
                    for (int i = 0; i < list.size(); i++) {
                        Object[] obj = (Object[]) list.get(i);
                        //发文日期、文号、标题、拟稿单位
                        result += "";

                        result += "";
                        result += "" + obj[1] + "";
                        result += "" + obj[2] + "";
                        result += "" + obj[3] + "";
                        //添加id
                        result += "" + obj[4] + "";
                        result += "";
                    }
                    result += "" + map.get("recordCount") + "";
                    result += "";

至此,后台代码完成;webservice的实体和方法要在配置文件中配置,本次开发配置写在servicePase.xml中;


          com.whir.rd.parse.FileCountParse
       
	      getSendFileList
	      getReceiveFileList
		  getAgencyFileList
       
	

配置完成后,代码部分完成,但是不要忘了写接口文档,供第三方同事参考:

/*** 获取发文  key  参数固定值   DFFD512F3C274EC11AF53753FC82B483
 * type  月/季度/年     month/quarter/year
 * userACcounts     用户名
 *startPage   当前页
 *pageSize    一页几行
 */
 "" +
"DFFD512F3C274EC11AF53753FC82B483" +
"getSendFileList" +
"year" +
"曾斌" +
"1"
"10"
"";

顺便说一下从第三方系统访问自己系统的代码和配置,首先,写一个过滤器(拦截器)

public class loginTourlFiltel implements Filter {
HttpServletRequest request = (HttpServletRequest) servletRequest;
		HttpServletResponse response=(HttpServletResponse)servletResponse;
		String userAccount = request.getParameter("userAccount") == null ? "" : request.getParameter("userAccount");
		String opentype = request.getParameter("opentype") == null ? "" : request.getParameter("opentype");//连接类型

//判断参数
if(userAccount!=null&&!"".equals(userAccount))	{
			//设置用户seesion信息
			setSeesion(request, response, userAccount);
			String mainUrl = "";
			if("information".equals(opentype)){
				Object[] obj = getOpenInfo(informationId);
				mainUrl = "/defaultroot/Information!view.action?informationId="+informationId+"&userDefine="+obj[0]+"&informationType="+obj[1]+"&channelId="+obj[2]+"&channelType="+obj[3]+"&userChannelName=信息管理";
}
//跳转到本系统
response.setCharacterEncoding("utf-8");
			// 告诉浏览器,服务器发送的消息体数据的编码。建议浏览器使用该编码解码
			response.setHeader("content-type", "text/html;charset=utf-8");
			response.setHeader("Access-Control-Allow-Origin","*");//允许所有域名访问
			response.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS,DELETE");
			response.setHeader("Access-Control-Max-Age", "3600");
			response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorization");
			response.setHeader("Access-Control-Allow-Credentials", "true");
			// 简单的形式,设置编码
			response.setContentType("text/html;charset=utf-8");
			//不用重定向了
			//response.sendRedirect(mainUrl);
			PrintWriter pw = response.getWriter();
			// 2.输出数据
			pw.write("");
			pw.close();
}

这一块的逻辑类似一个单点;
当然,不能忘了在web.xml配置拦截器的访问!!!
配置文件写上访问的格式,供第三方参考

公文统计发文跳转详情的地址:
http://ip:端口/defaultroot/loginJump?userAccount=whir&opentype=sendFile&informationId=21545

你可能感兴趣的:(java)