• U811.1接口EAI系列之一--通用把XML传送给EAI处理方法--PowerBuilder语言


    1.前面配置参考:http://www.cnblogs.com/spring_wang/p/3393147.html

    2.pb通用调EAI方法代码如下:

    //====================================================================
    // 函数: .gf_interface_eai( )
    //--------------------------------------------------------------------
    // 描述:
    //--------------------------------------------------------------------
    // 参数:
    //     value    datawindow    adw_data    查询时,接收数据的数据窗口
    //     value    string        as_xml      上传U8 EAI的XML字符串
    //     value    string        as_proc     //操作 增、删、改、查
    //     value    string        as_u8key //返回的U8关键字,有时候返回不回来最新的
    //--------------------------------------------------------------------
    // 返回:  integer成功返回1,失败返回0
    //--------------------------------------------------------------------
    // 修改历史:
    //
    //====================================================================
    
    oleobject ixmldom//接收XML文件,分析数据用
    OLEObject xmlhttp//EAI连接及发送数据用
    
    integer li_result//返回值
    string ls_return
    string ls_succeed//0:成功,其它:失败
    string ls_dsc//错误描述
    string ls_u8key//U8关键字,对于凭证,为U8凭证号
    string ls_voucher_type//凭证字
    string ls_u8period//凭证U8会计期间
    long ll_return
    string ls_data//从数据窗口读取的XML数据
    long ll_pos
    string ls_roottag
    
    xmlhttp = CREATE OLEObject
    xmlhttp.ConnectToNewObject("MSXML2.XMLHTTP") //创建XMLHTTP对象
    xmlhttp.open("POST", "http://localhost/u8eai/import.asp", False)
    xmlhttp.send (as_xml)   //发送Request消息
    
    ls_return = xmlhttp.responseText   //获取返回Response消息
    
    destroy xmlhttp
    
    ixmldom = CREATE OLEObject
    ll_return = ixmldom.connecttonewobject( "microsoft.xmldom")//创建DOM对象
    if ll_return <> 0 then//创建失败
        destroy ixmldom
        Return 0
    end if
    iXMLDOM.loadXML(ls_return)
    
    //需要注意:查询数据成功时,返回的字符串中没有succeed关键字,此时直接取值,会报错
    //所以,需要先判断是否成功
    if as_proc = 'Query' then
        ll_pos = pos(ls_return,'succeed=')
        if ll_pos > 0 then
            ls_succeed = iXMLDOM.selectSingleNode("ufinterface").childNodes(0).Attributes.getNamedItem("succeed").Text//获取成功失败标识
        end if
    else
        ls_succeed = iXMLDOM.selectSingleNode("ufinterface").childNodes(0).Attributes.getNamedItem("succeed").Text//获取成功失败标识
    end if
    
    if ls_succeed <> '0' and not gf_str_isnull(ls_succeed) then
        ls_dsc = iXMLDOM.selectSingleNode("ufinterface").childNodes(0).Attributes.getNamedItem("dsc").Text//获取错误描述
        messagebox(ls_succeed,ls_dsc)
        destroy ixmldom
        //生成失败日志
        
        Return 0
    end if
    
    if as_proc = 'Query' then//如果是查询,将数据导入到对应数据窗口中
        ls_return = gf_replaceall(ls_return,'<?xml version="1.0"?>','',1)//先去掉固定头
        ls_return = mid(ls_return,pos(ls_return,'>')+1,len(ls_return)-pos(ls_return,'>'))//将参数相关去掉
        ls_return = '<ufinterface>' + ls_return//增加固定头
        ls_return = '<?xml version="1.0"?>' + ls_return//增加固定头
        gf_writefile(blob(ls_return),'Import.xml')//必须先生成XML文件
        adw_data.ImportFile(XML!,'Import.xml')//将XML文件导入数据窗口
    elseif as_proc = 'Delete' then//删除暂不处理
    else//如果是修改/新增U8数据,需要更新日志
        ls_roottag = Trim(iXMLDOM.selectSingleNode("ufinterface").Attributes.getNamedItem("request-roottag").Text)
        if ls_roottag = 'voucher' then
            ls_voucher_type = iXMLDOM.selectSingleNode("ufinterface").childNodes(0).Attributes.getNamedItem("voucher_type").Text//凭证类别字
            ls_voucher_type = iXMLDOM.selectSingleNode("ufinterface").childNodes(0).Attributes.getNamedItem("accounting_period").Text//凭证会计期间
            ls_u8key = iXMLDOM.selectSingleNode("ufinterface").childNodes(0).Attributes.getNamedItem("u8accounting_period").Text//凭证号
        else
            ls_u8key = iXMLDOM.selectSingleNode("ufinterface").childNodes(0).Attributes.getNamedItem("key").Text//生成U8数据的关键字
        end if
        //更新日志
        
    end if
    destroy ixmldom
    as_u8key = ls_u8key
    Return 1


    原创:王春天 2013.11.04

    地址:http://www.cnblogs.com/spring_wang/p/3406230.html

  • 相关阅读:
    Solaris下批量kill掉oracle的session
    我写blog的方式变迁
    filezilla ftp client在win7 下获取ftp目录信息出错解决方法
    GNU System Monitor编译问题
    在vmware的Solaris虚拟机中安装vmtool
    关于golden gate director client的一点点使用总结
    测试 乱弹
    ORM的世界 (再补充)
    Yahoo Konfabulator
    轻量容器和注射依赖 的自实现
  • 原文地址:https://www.cnblogs.com/spring_wang/p/3406230.html
Copyright © 2020-2023  润新知