• 接口中的xml报文和实体类的之间转换


    需求:湖险行业意健险保风险预警平台数据接口

        平台提供HTTPServlet服务,接受保险公司的数据请求,并在处理后返回给保险公司相应的处理结果。数据接口格式为XML数据报文,在每次接口的交易中,都包含了请求的XML数据与平台返回的XML数据。

              直接操作xml格式的报文是不太方便的,最好是将xml格式的报文转换成对应的实体类,再进行操作会变得清晰方便许多。

              接下来的代码是xml和实体类之间的相互转化。

      1 package com.sinosoft.serviceclient.bj;
      2 
      3 import com.sinosoft.lis.pubfun.PubFun;
      4 import com.sinosoft.serviceclient.ServiceClient;
      5 import com.sinosoft.tech.log.Logger;
      6 import com.sinosoft.tech.log.LoggerFactory;
      7 import com.sinosoft.tools.xmltools.framework.XmlConvertor;
      8 import com.sinosoft.utility.SSRS;
      9 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Body_Req;
     10 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Body_Rsp;
     11 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Constantly_Req;
     12 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Head_Req;
     13 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Head_Rsp;
     14 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Packet_Req;
     15 import com.sinosoft.webservice.DTO.hnRiskWarning.contUpload.ContUpload_Packet_Rsp;
     16 import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Body_Req;
     17 import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Constantly_Req;
     18 import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Head_Req;
     19 import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Packet_Req;
     20 import com.sinosoft.webservice.DTO.hnRiskWarning.edorUpload.EdorUpload_Packet_Rsp;
     21 import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Body_Req;
     22 import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Constantly_Req;
     23 import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Head_Req;
     24 import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Packet_Req;
     25 import com.sinosoft.webservice.DTO.hnRiskWarning.registerUpload.RegisterUpload_Packet_Rsp;
     26 import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Body_Req;
     27 import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Constantly_Req;
     28 import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Head_Req;
     29 import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Packet_Req;
     30 import com.sinosoft.webservice.DTO.hnRiskWarning.settleUpload.SettleUpload_Packet_Rsp;
     31 
     32 /**
     33  * 湖南风险预警平台-客户端
     34  * 
     35  * @author 赵永强
     36  */
     37 public class HNRiskWarningClient {
     38     static final Logger logger = LoggerFactory.getLogger(HNRiskWarningClient.class);
     39     // 系统当前日期
     40     private String mCurrentDate;
     41     // 系统当前时间
     42     private String mCurrentTime;
     43     // 转换器
     44     private XmlConvertor convertor = new XmlConvertor();
     45     // 发送请求
     46     ServiceClient serviceClient = new ServiceClient();
     47 
     48     public HNRiskWarningClient() {
     49         mCurrentTime = PubFun.getCurrentTime();
     50         mCurrentDate = PubFun.getCurrentDate();
     51     }
     52 
     53     // 需要在select * from ldinterfaceconfig l where makeoperator='' for update;
     54     // 表中进行配置
     55     // 接口的环节,分为:承保环节 理赔环节
     56 
     57     // 承保环节-保单上传
     58     public boolean contUpload(SSRS tSSRS) {
     59 
     60         // 封装报文
     61         ContUpload_Packet_Req tContUpload_Packet_Req = new ContUpload_Packet_Req();
     62         ContUpload_Head_Req tContUpload_Head_Req = new ContUpload_Head_Req();
     63         // 先给报文头附上默认值,后期需要改动再改动
     64         tContUpload_Head_Req.setRecordType("V02");
     65         tContUpload_Head_Req.setCompanyCode("C1");
     66         tContUpload_Head_Req.setUptime(mCurrentDate + " " + mCurrentTime);
     67         tContUpload_Head_Req.setSign("FC9AAD2CD4C8992D8E6D484BC0FF5C40");
     68         tContUpload_Head_Req.setUpNumber("100");
     69 
     70         ContUpload_Body_Req tContUpload_Body_Req = new ContUpload_Body_Req();
     71         // 创建对象数组
     72         ContUpload_Constantly_Req[] tUpload_Constantly_Reqs = new ContUpload_Constantly_Req[tSSRS.getMaxRow()];
     73 
     74         for (int i = 1; i <= tSSRS.getMaxRow(); i++) {
     75             ContUpload_Constantly_Req tContUpload_Constantly_Req = new ContUpload_Constantly_Req();
     76             tContUpload_Constantly_Req.setNumber(tSSRS.GetText(i, 1));
     77             tContUpload_Constantly_Req.setItemKind(tSSRS.GetText(i, 2));
     78             tContUpload_Constantly_Req.setPolicyNo(tSSRS.GetText(i, 3));
     79             tContUpload_Constantly_Req.setInsuredName(tSSRS.GetText(i, 4));
     80             tContUpload_Constantly_Req.setInsuredIdType(tSSRS.GetText(i, 5));
     81             tContUpload_Constantly_Req.setInsuredIdCard(tSSRS.GetText(i, 6));
     82             tContUpload_Constantly_Req.setSellChannel(tSSRS.GetText(i, 7));
     83             tContUpload_Constantly_Req.setStartDate(tSSRS.GetText(i, 8));
     84             tContUpload_Constantly_Req.setEndDate(tSSRS.GetText(i, 9));
     85             tContUpload_Constantly_Req.setEnterTime(tSSRS.GetText(i, 10));
     86             tContUpload_Constantly_Req.setAmount(tSSRS.GetText(i, 11));
     87             tContUpload_Constantly_Req.setAreaId(tSSRS.GetText(i, 12));
     88 
     89             tUpload_Constantly_Reqs[i - 1] = tContUpload_Constantly_Req;
     90 
     91         }
     92 
     93         tContUpload_Body_Req.setContUpload_Constantly(tUpload_Constantly_Reqs);
     94         tContUpload_Packet_Req.setBody(tContUpload_Body_Req);
     95         tContUpload_Packet_Req.setHead(tContUpload_Head_Req);
     96         // 调用webService接口发送数据,并获取返回的xml数据
     97         byte[] requestXML = convertor.convertToXml(tContUpload_Packet_Req, "");
     98         String mStr = new String(requestXML);
     99         logger.info(" 承保环节-保单上传-请求报文:" + mStr);
    100         String returnXML = "";// 接收预警平台传过来的返回报文
    101         try {
    102             // TODO callService方法中参数,需后续配置
    103             returnXML = serviceClient.callService("", "", mStr);
    104             // 对湖南预警平台返回的报文进行解析并正确和错误结果
    105             ContUpload_Packet_Rsp tContUpload_Packet_Rsp = convertor.convertToObject(returnXML, ContUpload_Packet_Rsp.class);
    106             if ("0".equals(tContUpload_Packet_Rsp.getHead().getErrorNumber())) {
    107                 logger.info("推送数据-[承保环节-保单上传]-完成,调用接口成功");
    108                 return true;
    109             }
    110             if ("2".equals(tContUpload_Packet_Rsp.getHead().getErrorNumber())) {
    111                 logger.info("推送数据-[承保环节-保单上传]-失败,调用接口失败");
    112                 return false;
    113             }
    114 
    115         } catch (Exception e1) {
    116             logger.error("调用湖南保险行业意健险承保风险预警平台数据接口-[承保环节-保单上传]-报错了!", e1);
    117             logger.info("调用湖南保险行业意健险承保风险预警平台数据接口-[承保环节-保单上传]-结束!");
    118             e1.printStackTrace();
    119             return false;
    120         }
    121         return true;
    122 
    123     }
    124 
    125     // 承保环节-批单上传
    126     public boolean edorUpload(SSRS tSSRS) {
    127 
    128         // 封装报文
    129         EdorUpload_Packet_Req tEdorUpload_Packet_Req = new EdorUpload_Packet_Req();
    130         EdorUpload_Head_Req tEdorUpload_Head_Req = new EdorUpload_Head_Req();
    131         // 先给报文头附上默认值,后期需要改动再改动
    132         tEdorUpload_Head_Req.setRecordType("V03");
    133         tEdorUpload_Head_Req.setCompanyCode("C1");
    134         tEdorUpload_Head_Req.setUptime(mCurrentDate + " " + mCurrentTime);
    135         tEdorUpload_Head_Req.setSign("FC9AAD2CD4C8992D8E6D484BC0FF5C40");
    136         tEdorUpload_Head_Req.setUpNumber("100");
    137 
    138         EdorUpload_Body_Req tEdorUpload_Body_Req = new EdorUpload_Body_Req();
    139         // 创建对象数组
    140         EdorUpload_Constantly_Req[] tEdorUpload_Constantly_Reqs = new EdorUpload_Constantly_Req[tSSRS.getMaxRow()];
    141 
    142         for (int i = 1; i <= tSSRS.getMaxRow(); i++) {
    143             EdorUpload_Constantly_Req tEdorUpload_Constantly_Req = new EdorUpload_Constantly_Req();
    144             tEdorUpload_Constantly_Req.setNumber(tSSRS.GetText(i, 1));
    145             tEdorUpload_Constantly_Req.setItemKind(tSSRS.GetText(i, 2));
    146             tEdorUpload_Constantly_Req.setEndorseNo(tSSRS.GetText(i, 3));
    147             tEdorUpload_Constantly_Req.setPolicyNo(tSSRS.GetText(i, 4));
    148             tEdorUpload_Constantly_Req.setIniInsuredName(tSSRS.GetText(i, 5));
    149             tEdorUpload_Constantly_Req.setIniInsuredIdType(tSSRS.GetText(i, 6));
    150             tEdorUpload_Constantly_Req.setIniInsuredIdCard(tSSRS.GetText(i, 7));
    151             tEdorUpload_Constantly_Req.setInsuredName(tSSRS.GetText(i, 8));
    152             tEdorUpload_Constantly_Req.setInsuredIdType(tSSRS.GetText(i, 9));
    153             tEdorUpload_Constantly_Req.setInsuredIdCard(tSSRS.GetText(i, 10));
    154             tEdorUpload_Constantly_Req.setSellChannel(tSSRS.GetText(i, 11));
    155             tEdorUpload_Constantly_Req.setStartDate(tSSRS.GetText(i, 12));
    156             tEdorUpload_Constantly_Req.setEndDate(tSSRS.GetText(i, 13));
    157             tEdorUpload_Constantly_Req.setEnterTime(tSSRS.GetText(i, 14));
    158             tEdorUpload_Constantly_Req.setAmount(tSSRS.GetText(i, 15));
    159             tEdorUpload_Constantly_Req.setAreaId(tSSRS.GetText(i, 16));
    160 
    161             tEdorUpload_Constantly_Reqs[i - 1] = tEdorUpload_Constantly_Req;
    162 
    163         }
    164 
    165         tEdorUpload_Body_Req.setEdorUpload_Constantly_Req(tEdorUpload_Constantly_Reqs);
    166         tEdorUpload_Packet_Req.setBody(tEdorUpload_Body_Req);
    167         tEdorUpload_Packet_Req.setHead(tEdorUpload_Head_Req);
    168         // 调用webService接口发送数据,并获取返回的xml数据
    169         byte[] requestXML = convertor.convertToXml(tEdorUpload_Packet_Req, "");
    170         String mStr = new String(requestXML);
    171         logger.info(" 承保环节-批单-请求报文:" + mStr);
    172         String returnXML = "";// 接收预警平台传过来的返回报文
    173         try {
    174             // TODO callService方法中参数,需后续配置
    175             returnXML = serviceClient.callService("", "", mStr);
    176             // 对湖南预警平台返回的报文进行解析并正确和错误结果
    177             EdorUpload_Packet_Rsp tEdorUpload_Packet_Rsp = convertor.convertToObject(returnXML, EdorUpload_Packet_Rsp.class);
    178             if ("0".equals(tEdorUpload_Packet_Rsp.getHead().getErrorNumber())) {
    179                 logger.info("推送数据-[承保环节-批单上传]-完成,调用接口成功");
    180                 return true;
    181             }
    182             if ("2".equals(tEdorUpload_Packet_Rsp.getHead().getErrorNumber())) {
    183                 logger.info("推送数据-[承保环节-批单上传]-失败,调用接口失败");
    184                 return false;
    185             }
    186 
    187         } catch (Exception e1) {
    188             logger.error("调用湖南保险行业意健险承保风险预警平台数据接口-[承保环节-批单上传]-报错了!", e1);
    189             logger.info("调用湖南保险行业意健险承保风险预警平台数据接口-[承保环节-批单上传]-结束!");
    190             e1.printStackTrace();
    191             return false;
    192         }
    193         return true;
    194 
    195     }
    196 
    197     // 理赔部分-立案上传
    198     public boolean registerUpload(SSRS tSSRS) {
    199 
    200         // 封装报文
    201         RegisterUpload_Packet_Req tRegisterUpload_Packet_Req = new RegisterUpload_Packet_Req();
    202         RegisterUpload_Head_Req tRegisterUpload_Head_Req = new RegisterUpload_Head_Req();
    203         // 先给报文头附上默认值,后期需要改动再改动
    204         tRegisterUpload_Head_Req.setRecordType("V04");
    205         tRegisterUpload_Head_Req.setCompanyCode("C1");
    206         tRegisterUpload_Head_Req.setUptime(mCurrentDate + " " + mCurrentTime);
    207         tRegisterUpload_Head_Req.setSign("FC9AAD2CD4C8992D8E6D484BC0FF5C40");
    208         tRegisterUpload_Head_Req.setUpNumber("100");
    209 
    210         RegisterUpload_Body_Req tRegisterUpload_Body_Req = new RegisterUpload_Body_Req();
    211         // 创建对象数组
    212         RegisterUpload_Constantly_Req[] tRegisterUpload_Constantly_Reqs = new RegisterUpload_Constantly_Req[tSSRS.getMaxRow()];
    213 
    214         for (int i = 1; i <= tSSRS.getMaxRow(); i++) {
    215             RegisterUpload_Constantly_Req tRegisterUpload_Constantly_Req = new RegisterUpload_Constantly_Req();
    216             tRegisterUpload_Constantly_Req.setNumber(tSSRS.GetText(i, 1));
    217             tRegisterUpload_Constantly_Req.setItemKind(tSSRS.GetText(i, 2));
    218             tRegisterUpload_Constantly_Req.setReportNo(tSSRS.GetText(i, 3));
    219             tRegisterUpload_Constantly_Req.setPolicyNo(tSSRS.GetText(i, 4));
    220             tRegisterUpload_Constantly_Req.setInsuredName(tSSRS.GetText(i, 5));
    221             tRegisterUpload_Constantly_Req.setInsuredIdType(tSSRS.GetText(i, 6));
    222             tRegisterUpload_Constantly_Req.setInsuredIdCard(tSSRS.GetText(i, 7));
    223             tRegisterUpload_Constantly_Req.setReportDate(tSSRS.GetText(i, 8));
    224             tRegisterUpload_Constantly_Req.setLossDate(tSSRS.GetText(i, 9));
    225             tRegisterUpload_Constantly_Req.setClaimDate(tSSRS.GetText(i, 10));
    226             tRegisterUpload_Constantly_Req.setLossAmount(tSSRS.GetText(i, 11));
    227             tRegisterUpload_Constantly_Req.setLossAddress(tSSRS.GetText(i, 12));
    228             tRegisterUpload_Constantly_Reqs[i - 1] = tRegisterUpload_Constantly_Req;
    229 
    230         }
    231 
    232         tRegisterUpload_Body_Req.setRegisterUpload_Constantly_Req(tRegisterUpload_Constantly_Reqs);
    233         tRegisterUpload_Packet_Req.setBody(tRegisterUpload_Body_Req);
    234         tRegisterUpload_Packet_Req.setHead(tRegisterUpload_Head_Req);
    235         // 调用webService接口发送数据,并获取返回的xml数据
    236         byte[] requestXML = convertor.convertToXml(tRegisterUpload_Packet_Req, "");
    237         String mStr = new String(requestXML);
    238         logger.info(" 理赔环节-立案上传-请求报文:" + mStr);
    239         String returnXML = "";// 接收预警平台传过来的返回报文
    240         try {
    241             // TODO callService方法中参数,需后续配置
    242             returnXML = serviceClient.callService("", "", mStr);
    243             // 对湖南预警平台返回的报文进行解析并正确和错误结果
    244             RegisterUpload_Packet_Rsp tRegisterUpload_Packet_Rsp = convertor.convertToObject(returnXML, RegisterUpload_Packet_Rsp.class);
    245             if ("0".equals(tRegisterUpload_Packet_Rsp.getHead().getErrorNumber())) {
    246                 logger.info("推送数据-[理赔环节-立案上传]-完成,调用接口成功");
    247                 return true;
    248             }
    249             if ("2".equals(tRegisterUpload_Packet_Rsp.getHead().getErrorNumber())) {
    250                 logger.info("推送数据-[理赔环节-立案上传]-失败,调用接口失败");
    251                 return false;
    252             }
    253         } catch (Exception e1) {
    254             logger.error("调用湖南保险行业意健险承保风险预警平台数据接口-[理赔环节-立案上传]-报错了!", e1);
    255             logger.info("调用湖南保险行业意健险承保风险预警平台数据接口-[理赔环节-立案上传]-结束!");
    256             e1.printStackTrace();
    257             return false;
    258         }
    259         return true;
    260     }
    261 
    262     // 理赔部分-结案上传
    263     public boolean settleUpload(SSRS tSSRS) {
    264         // 封装报文
    265         SettleUpload_Packet_Req tSettleUpload_Packet_Req = new SettleUpload_Packet_Req();
    266         SettleUpload_Head_Req tSettleUpload_Head_Req = new SettleUpload_Head_Req();
    267         // 先给报文头附上默认值,后期需要改动再改动
    268         tSettleUpload_Head_Req.setRecordType("V05");
    269         tSettleUpload_Head_Req.setCompanyCode("C1");
    270         // tSettleUpload_Head_Req.setUptime("2016-12-19 10:47:50");
    271         tSettleUpload_Head_Req.setUptime(mCurrentDate + " " + mCurrentTime);
    272         tSettleUpload_Head_Req.setSign("FC9AAD2CD4C8992D8E6D484BC0FF5C40");
    273         tSettleUpload_Head_Req.setUpNumber("100");
    274 
    275         SettleUpload_Body_Req tSettleUpload_Body_Req = new SettleUpload_Body_Req();
    276         // 创建对象数组
    277         SettleUpload_Constantly_Req[] tSettleUpload_Constantly_Reqs = new SettleUpload_Constantly_Req[tSSRS.getMaxRow()];
    278 
    279         for (int i = 1; i <= tSSRS.getMaxRow(); i++) {
    280             SettleUpload_Constantly_Req tSettleUpload_Constantly_Req = new SettleUpload_Constantly_Req();
    281             tSettleUpload_Constantly_Req.setNumber(tSSRS.GetText(i, 1));
    282             tSettleUpload_Constantly_Req.setItemKind(tSSRS.GetText(i, 2));
    283             tSettleUpload_Constantly_Req.setReportNo(tSSRS.GetText(i, 3));
    284             tSettleUpload_Constantly_Req.setPolicyNo(tSSRS.GetText(i, 4));
    285             tSettleUpload_Constantly_Req.setInsuredName(tSSRS.GetText(i, 5));
    286             tSettleUpload_Constantly_Req.setInsuredIdType(tSSRS.GetText(i, 6));
    287             tSettleUpload_Constantly_Req.setInsuredIdCard(tSSRS.GetText(i, 7));
    288             tSettleUpload_Constantly_Req.setEndCaseDate(tSSRS.GetText(i, 8));
    289             tSettleUpload_Constantly_Req.setPayAmount(tSSRS.GetText(i, 9));
    290 
    291             tSettleUpload_Constantly_Reqs[i - 1] = tSettleUpload_Constantly_Req;
    292 
    293         }
    294 
    295         tSettleUpload_Body_Req.setSettleUpload_Constantly_Req(tSettleUpload_Constantly_Reqs);
    296         tSettleUpload_Packet_Req.setBody(tSettleUpload_Body_Req);
    297         tSettleUpload_Packet_Req.setHead(tSettleUpload_Head_Req);
    298         // 调用webService接口发送数据,并获取返回的xml数据
    299         byte[] requestXML = convertor.convertToXml(tSettleUpload_Packet_Req, "");
    300         String mStr = new String(requestXML);
    301         logger.info(" 理赔环节-结案上传-请求报文:" + mStr);
    302         String returnXML = "";// 接收预警平台传过来的返回报文
    303         try {
    304             // TODO callService方法中参数,需后续配置
    305             returnXML = serviceClient.callService("", "", mStr);
    306             SettleUpload_Packet_Rsp tSettleUpload_Packet_Rsp = convertor.convertToObject(returnXML, SettleUpload_Packet_Rsp.class);
    307             if ("0".equals(tSettleUpload_Packet_Rsp.getHead().getErrorNumber())) {
    308                 logger.info("推送数据-[理赔环节-结案上传]-完成,调用接口成功");
    309                 return true;
    310             }
    311             if ("2".equals(tSettleUpload_Packet_Rsp.getHead().getErrorNumber())) {
    312                 logger.info("推送数据-[理赔环节-结案上传]-失败,调用接口失败");
    313                 return false;
    314             }
    315         } catch (Exception e1) {
    316             logger.error("调用湖南保险行业意健险承保风险预警平台数据接口-[理赔环节-结案上传]-报错了!", e1);
    317             logger.info("调用湖南保险行业意健险承保风险预警平台数据接口-[理赔环节-结案上传]-结束!");
    318             e1.printStackTrace();
    319             return false;
    320         }
    321         return true;
    322     }
    323 
    324     /**
    325      * 测试方法
    326      * 
    327      * @param args
    328      */
    329     public static void main(String[] args) {
    330         // HNRiskWarningClient hnRiskWarningClient=new HNRiskWarningClient();
    331         // InsureQuery_Packet_Req req=new InsureQuery_Packet_Req();
    332         // hnRiskWarningClient.queryInsurance(req);
    333         XmlConvertor convertor = new XmlConvertor();
    334         ContUpload_Packet_Rsp tContUpload_Packet_Rsp = new ContUpload_Packet_Rsp();
    335         ContUpload_Body_Rsp tUpload_Body_Rsp = new ContUpload_Body_Rsp();
    336         ContUpload_Head_Rsp tUpload_Head_Rsp = new ContUpload_Head_Rsp();
    337         tUpload_Head_Rsp.setErrorNumber("2");
    338         tUpload_Head_Rsp.setUpNumber("100");
    339         tUpload_Head_Rsp.setRecordType("V02");
    340         tContUpload_Packet_Rsp.setBody(tUpload_Body_Rsp);
    341         tContUpload_Packet_Rsp.setHead(tUpload_Head_Rsp);
    342         byte[] convertToXml = convertor.convertToXml(tContUpload_Packet_Rsp, "gbk");
    343         String str = new String(convertToXml);
    344         System.out.println("请求参数:" + str);
    345         tContUpload_Packet_Rsp = convertor.convertToObject(str, ContUpload_Packet_Rsp.class);
    346         if ("0".equals(tContUpload_Packet_Rsp.getHead().getErrorNumber())) {
    347             logger.info("推送数据-[承保环节-保单上传]-完成,调用接口成功");
    348 
    349         }
    350         if ("2".equals(tContUpload_Packet_Rsp.getHead().getErrorNumber())) {
    351             logger.info("推送数据-[承保环节-保单上传]-失败,调用接口失败");
    352         }
    353         String currentTime = PubFun.getCurrentTime();
    354         System.out.println("currentTime:" + currentTime);
    355     }
    356 
    357 }
  • 相关阅读:
    scrapy 第一个案例(爬取腾讯招聘职位信息)
    scrapy 代码调试用 shell
    scrapy 命令行创建 启动 跟踪
    scrapy 手动编写模板
    scrapy安装
    爬虫之xpath用法
    爬虫之 beautifusoup4
    抓包工具fiddler
    12306登录爬虫 session版本
    Drainage Ditches(dinic)
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/11458970.html
Copyright © 2020-2023  润新知