checkcode_submit

本文详细介绍了如何使用工作流程自动识别并提交验证码的过程,包括获取Cookie、获取图片、识别验证码、提交验证等关键步骤。

<!DOCTYPE workflow-resource PUBLIC "Spider-Core workflow dtd"
        "http://rc.91yong.com/spider.dtd"
        >
<workflow-resource prefix="ganji">

    <workflow id="checkcode_submit">


        <var type="HttpClientUtilParam" id="getCookie">
            <field name="url">http://fz.ganji.com/sorry/confirm.php?</field>
        </var>
        <exe id="getCookie" name="getHtml">
        </exe>

        <var type="HttpClientUtilParam" id="imgGet">
            <field name="url">http://www.ganji.com/sorry/cc.php</field>
            <field name="resultType">BYTE</field>
        </var>

        <exe id="imgGet" name="getBytes">
            <output>
                <var id="img"/>
            </output>
        </exe>

        <exe type="logger" name="info">
            <param>img</param>
            <param>
                <var id="img"/>
            </param>
        </exe>

        <exe type="ValidateCodeUtil" name="recognition">
            <param>
                <var id="img"/>
            </param>
            <param>lowcase</param>
            <output>
                <var id="checkcode"/>
            </output>
        </exe>


        <exe type="logger" name="info">
            <param>自动识别的验证码</param>
            <param><var id="checkcode"/></param>
        </exe>

        <var type="StringBuilder" id="submitUrl">
            <field name="append">http://www.ganji.com/sorry/checkcode.php?code=</field>
            <field name="append">
                <var id="checkcode"/>
            </field>
        </var>

        <var type="HttpClientUtilParam" id="submit">
            <field name="url">
                <var id="submitUrl"/>
            </field>
            <field name="method">GET</field>
        </var>

        <exe id="submit" name="getHtml">
            <output>
                <var id="_checkCodeBack" global="true"></var>
            </output>
        </exe>

        <exe type="logger" name="info">
            <param>return</param>
            <param>
                <var id="_checkCodeBack" global="true"/>
            </param>
        </exe>


        <exe type="ChannelScriptEngine" name="eval">
            <param>validateCheckcodeSuccess</param>
            <output>
                <var id="result"/>
            </output>
        </exe>

        <exe type="ExceptionUtil" name="throwRetryIfEmpty">
            <param>
                <var id="result"/>
            </param>
        </exe>


    </workflow>

</workflow-resource>

if (ObjectUtil.isNotEmpty(responseBodyData.get("list"))){ List<Map<String, Object>> responseBodyLists = (List<Map<String, Object>>) responseBodyData.get("list"); if (!responseBodyLists.isEmpty()){ Map<String, Object> responseBodyList = responseBodyLists.get(0); PayMesAttachment payMesAttachment = new PayMesAttachment(); payMesAttachment.setAttachment(responseBodyList.get("cbsLinkFileContent").toString()); payMesAttachment.setCheckCode(responseBodyList.get("checkCode").toString()); payMesAttachment.setSaveTime(DateUtil.format(new Date(), "yyyyMMdd").toString()); this.getHibernateTemplate().save(payMesAttachment); } }Hibernate: select paymes0_.ID as ID, paymes0_.TRANSACTION_SERIAL_NO as TRANSACT2_, paymes0_.ITEM_NO as ITEM_NO, paymes0_.ACCOUNT_NO as ACCOUNT_NO, paymes0_.ACCOUNT_NAME as ACCOUNT_5_, paymes0_.BANK_TYPE as BANK_TYPE, paymes0_.OPEN_BANK as OPEN_BANK, paymes0_.BANK_TRANSCACTION_DATE as BANK_TRA8_, paymes0_.CURRENCY as CURRENCY, paymes0_.DETAIL_TYPE as DETAIL_10_, paymes0_.LOAN_TYPE as LOAN_TYPE, paymes0_.INCURRED_AMOUNT as INCURRE12_, paymes0_.PURPOSE as PURPOSE, paymes0_.DIGEST as DIGEST, paymes0_.OPPOSITE_ACCOUNT as OPPOSIT15_, paymes0_.CUSTOMER_NUMBER as CUSTOME16_, paymes0_.OPPOSITE_NAME as OPPOSIT17_, paymes0_.OPPOSITE_OPENING_BANK as OPPOSIT18_, paymes0_.PAYMENT_NATURE_FLAG as PAYMENT19_, paymes0_.PAYMENT_NATURE as PAYMENT20_, paymes0_.DETAIL_SOURCE as DETAIL_21_, paymes0_.ACCOUNT_STATUS as ACCOUNT22_, paymes0_.REMARK as REMARK, paymes0_.ERP_SERIAL_NUMBER as ERP_SER24_, paymes0_.PAY_APPLY_REMARK1 as PAY_APP25_, paymes0_.RESERVE_FIELD1 as RESERVE26_, paymes0_.POSTSCRIPT as POSTSCRIPT, paymes0_.VOUCHER_CODE as VOUCHER28_, paymes0_.BOOKING_DATE as BOOKING29_, paymes0_.PERSONALIZE_FIELD1 as PERSONA30_, paymes0_.CREATE_DATE as CREATE_31_, paymes0_.CREATE_TIME as CREATE_32_, paymes0_.OWER as OWER, paymes0_.ACTUAL_AMOUNT as ACTUAL_34_, paymes0_.DATA_STATUS as DATA_ST35_, paymes0_.DATA_STATUS_MESSAGE as DATA_ST36_, paymes0_.BUKRS as BUKRS, paymes0_.HKONT as HKONT, paymes0_.STATUS as STATUS, paymes0_.SUBMIT_DATE as SUBMIT_40_, paymes0_.SUBMIT_TIME as SUBMIT_41_, paymes0_.VOUCHER_STATUS as VOUCHER42_, paymes0_.COMPANY_NAME as COMPANY43_, paymes0_.OPPOSITE_NAME_MARK as OPPOSIT44_, paymes0_.REMAIN_AMOUNT as REMAIN_45_, paymes0_.CHECKCODE as CHECKCODE from CERP_CRM_PAY_INFO paymes0_ where (NOT EXISTS(select paymesatta1_.CHECKCODE from CERP_CRM_PAY_INFO_ATTACHMENT paymesatta1_ where (paymes0_.CHECKCODE=paymesatta1_.CHECKCODE )AND((paymesatta1_.ATTACHMENT IS NULL )OR(paymesatta1_.ATTACHMENT='' )))) java.lang.NullPointerException at com.smec.apps.crm.service.impl.PaySubmitServiceImpl.saveAttachment(PaySubmitServiceImpl.java:384) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:335) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
08-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值