最近做了一个实名认证功能,需要调用公安部门接口进行认证,用到webService。期间查阅了很多资料。小结如下。

1、ws 客户端代码生成:

客户端代码是根据所给的url?wsdl文件生成的、该文件通过网络url或者本地都可以。生成方式有很多种、现稍做总结:

(1) 使用 jdk 自带的 wsimport 生成 : 将dos窗口切换至src目录下执行命令   wsimport -keep 文件地址(本地/url)。jdk1.6 及以上。

(2)eclipse web Service Client 工具。 new 一个 web Service Client  需要填入 wsdl 文件地址和代码生成地址(src下面)

(3)使用 apache-cxf-3.2.1 (其他版本没试过): 下载安装 apache-cxf-3.2.1(http://cxf.apache.or/download.html)。配置环境变量 :在环境变量中配置CXF_HOME , 在PATH 中加入 %CXF_HOME%\bin。

以下内容为转载:

wsdl2java -p com -d src -all  wsdl
-p  指定其wsdl的命名空间,也就是要生成代码的包名
-d  指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动web  service的代码
-impl 生成web service的实现代码
-ant  生成build.xml文件
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.

实例1.:wsdl2java -p com -client -d d:/src  http://10.10.106.111:8090/webservice_cxf_spring/services/UserService?wsdl
实例2.:wsdl2java -p com -all  -d E:\jiekou  E:\jiekou\NciicServices.wsdl
生成java代码后可以直接复制到客户端中再客户端中使用

2 、测试代码如下:

package com.client;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.lang.reflect.Proxy;
import java.net.MalformedURLException;
import org.apache.commons.httpclient.protocol.Protocol;
import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxy;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.codehaus.xfire.transport.http.CommonsHttpMessageSender;
import org.codehaus.xfire.transport.http.EasySSLProtocolSocketFactory;
import org.codehaus.xfire.util.dom.DOMOutHandler;

import com.NciicServicesPortType;

public class NciicClient {

public static final String SERVICE_URL = "https://ws.nciic.org.cn/nciic_ws/services/";

public NciicClient() {

}

/**
     * XFire调用方法
     *
     * @param serviceName
     * @param condition
     * @return
     * @throws MalformedURLException
     */
    public String executeClient(String serviceName, String condition, String iNlicense) throws MalformedURLException {

ProtocolSocketFactory easy = new EasySSLProtocolSocketFactory();
        Protocol protocol = new Protocol("https", easy, 443);
        Protocol.registerProtocol("https", protocol);
        Service serviceModel = new ObjectServiceFactory().create(NciicServicesPortType.class, "NciicServices", null,
                null);
        NciicServicesPortType service = (NciicServicesPortType) new XFireProxyFactory().create(serviceModel,
                SERVICE_URL + serviceName);
        Client client = ((XFireProxy) Proxy.getInvocationHandler(service)).getClient();
        client.addOutHandler(new DOMOutHandler());

// 压缩传输
        client.setProperty(CommonsHttpMessageSender.GZIP_ENABLED, Boolean.TRUE);
        // 忽略超时
        client.setProperty(CommonsHttpMessageSender.DISABLE_EXPECT_CONTINUE, "1");
        client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0");

BufferedReader in;

// 调用核查方法
        String result = service.nciicCheck(iNlicense, condition);
        System.out.println("结果:" + result);
        return result;
    }

public static String fileRead() throws Exception {

File file = new File("授权文件地址");
        FileReader reader = new FileReader(file);
        BufferedReader bReader = new BufferedReader(reader);
        StringBuilder sb = new StringBuilder();
        String s = "";
        while ((s = bReader.readLine()) != null) {
            sb.append(s + "\n");
        }
        bReader.close();
        String str = sb.toString();
        return str;
    }

public static void main(String[] args) throws MalformedURLException {

try {

String license = fileRead();

String con = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"
                    + "<ROWS><INFO><SBM>$$SBM$$</SBM></INFO><ROW><GMSFHM> 公民身份号码\n"
                    + "</GMSFHM><XM> 姓名</XM></ROW><ROW FSD=\" $$FSD$$ \" YWLX=\" $$YWLX$$  \" >\n"
                    + "<GMSFHM>$$idno$$</GMSFHM><XM>$$username$$</XM></ROW></ROWS>";

con = con.replace("$$idno$$", "******").replace("$$username$$", "******");
            new NciicClient().executeClient("NciicServices", con, license);

} catch (Exception e) {
            e.printStackTrace();
        }
    }

}

注意:相关jar包本站可以下载。

cxf 实名认证---全国公民身份信息系统相关推荐

  1. php身份证注册判断重名,同名同姓测试,全国公民身份信息系统库查重名

    同名同姓测试,全国公民身份信息系统库查重名 时间:2020-05-21 13:30:01 大部分爸爸妈妈在给宝宝取姓名的时候,会好奇在全国范围内有多少人名字相同,希望孩子的名字不会跟太多人重合.或者有 ...

  2. 中国人民银行和公安部的联网核查公民身份信息系统存在bug

    要不是今天亲身经历,我还真不敢相信.照理银行的系统应该是逻辑上非常严密的才对,但是搞笑的事还是能发生.跟12306当初老是各种问题类似. 去银行办业务,我的身份证刷了一下,从银行的身份认证系统里面读出 ...

  3. 原来中国人民银行和公安部的联网核查公民身份信息系统存在bug的原因可能是身份证信息被基层派出所复制

    今天看到这样一则新闻: 男子身份证被"错制" 天降三千万债务成老赖维权难 才明白, 中国人民银行和公安部的"联网核查公民身份信息系统"存在bug 的原因, 可能 ...

  4. 第一个被赋予公明身份的机器人_世界首位获公民身份机器人索菲亚,称要结婚生子毁灭人类...

    如今人们的科学技术发展的越来越快,科学家们在机器人的领域上也有了很大的创新,就像机器人索菲亚一样,竟然成为了世界上第一位获得公民身份的机器人,不过这名机器人口气也是很大的,竟然公然宣称要毁灭人类,还想 ...

  5. 公民身份号码校验码算法(C#版)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. 中国志愿者服务器注册,全国志愿服务信息系统操作指南二(志愿者注册)

    原标题:全国志愿服务信息系统操作指南二(志愿者注册) 1 注册登录 在电脑上打开中国志愿服务网站. 网址: 点击网页顶部"志愿者注册"图标,打开志愿者注册页面. 选择"云 ...

  7. 一周AI看点 | 沙特授予机器人公民身份,美国信息产业理事会发布《人工智能政策原则》

    本期一周AI看点包括行业热点.投融资.业界观点.技术前沿以及应用等方面. 行业热点 解读搜狗招股书:AI成为未来 搜狐仍掌握控制权 目前搜狗确定的六大未来战略则是:拓展搜索市场.开发下一代人机接口.解 ...

  8. 都是套路!要毁灭人类、喷马斯克、还获得公民身份的机器人Sophia,真相确是...

    作者 | 逍遥小妖 本文转载自PingWest品玩(ID:wepingwest) 头图里这位机器人姑娘,想必各位都比较熟悉吧. 她的名字叫索菲亚,在过去一年里经常出现在微博和微信朋友圈刷屏. 最近的一 ...

  9. 全国志愿信息服务器,全国志愿者服务信息系统官网登录,2020全国志愿者服务信息系统官网登录注册入口预约 v1.0-手游汇...

    全国志愿者服务信息系统官网登录是一款用户们都可以使用的软件,最新的志愿者的活动会在平台上不断的更新都是附近的一些内容,这个平台本身来说是非常安全可靠的.您如果有意向的话在手机上就能够轻松的报名,可以充 ...

最新文章

  1. 从头理解self-attention机制
  2. 列举一些常见的系统系能瓶颈 Common Bottlenecks
  3. Community Server系列之二:页面之间的关系1[介绍]
  4. mockjs针对value生成随机数值(随机字符串,数值,日期,url,图片地址,email,ip等)
  5. scrapy 去重策略修改
  6. winpcap基本原理及常见应用_锁相放大器的基本原理(Part 1)
  7. 使用J-link+J-Flash给STM32芯片烧写序列号
  8. juniper使用U盘安装junos10k2系统
  9. iPXE部署Ubuntu无盘系统
  10. Python爬虫教程入门(附源码)
  11. 数据恢复——在Windows 10中恢复永久删除的文件的5种方法
  12. python实现爬虫_Python开发简单爬虫
  13. java农夫过河_农夫过河问题(java版)
  14. python 期货现货差价监测_现货价格和期货价格的关系怎么看?
  15. 【VUE实战问题记录】Vue 父组件调用子组件的使用方法
  16. 蓝牙各种版本的区别(推荐)
  17. 访问tomcat出现java.lang.IllegalStateException No output folder错误解决方法
  18. 带你了解什么是论文查重
  19. Windows 10 Excel批量导入打印条形码标签免费工具介绍
  20. 达飞云贷:玩转节日,给你不一样的惊喜!

热门文章

  1. 【蓝桥杯】 历届试题 合根植物(并查集)
  2. PHP“垂死挣扎”的十年!
  3. Vue slot-scope的理解(适合初学者)
  4. 网易发布第四季度财报 营收28.9亿美元
  5. UGUI中Text实现一个简单的打字机的效果
  6. MindSpore:【AIR模型导出】导出时提示源码中select_op参数类型转换失败
  7. TNF抑制剂在10例新近起病的难治性反应性关节炎患者中的安全性与疗效
  8. 【算法】leetcode 974. 和可被 K 整除的子数组(前缀和思想)
  9. 关于企业微信服务商入门考试v2.0题库
  10. 如何用数学知识提升情商?数学学霸们的6大思维习惯