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 <> then//创建失败
destroy ixmldom
Return
end if
iXMLDOM.loadXML(ls_return) //需要注意:查询数据成功时,返回的字符串中没有succeed关键字,此时直接取值,会报错
//所以,需要先判断是否成功
if as_proc = 'Query' then
ll_pos = pos(ls_return,'succeed=')
if ll_pos > then
ls_succeed = iXMLDOM.selectSingleNode("ufinterface").childNodes().Attributes.getNamedItem("succeed").Text//获取成功失败标识
end if
else
ls_succeed = iXMLDOM.selectSingleNode("ufinterface").childNodes().Attributes.getNamedItem("succeed").Text//获取成功失败标识
end if if ls_succeed <> '' and not gf_str_isnull(ls_succeed) then
ls_dsc = iXMLDOM.selectSingleNode("ufinterface").childNodes().Attributes.getNamedItem("dsc").Text//获取错误描述
messagebox(ls_succeed,ls_dsc)
destroy ixmldom
//生成失败日志 Return
end if if as_proc = 'Query' then//如果是查询,将数据导入到对应数据窗口中
ls_return = gf_replaceall(ls_return,'<?xml version="1.0"?>','',)//先去掉固定头
ls_return = mid(ls_return,pos(ls_return,'>')+,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().Attributes.getNamedItem("voucher_type").Text//凭证类别字
ls_voucher_type = iXMLDOM.selectSingleNode("ufinterface").childNodes().Attributes.getNamedItem("accounting_period").Text//凭证会计期间
ls_u8key = iXMLDOM.selectSingleNode("ufinterface").childNodes().Attributes.getNamedItem("u8accounting_period").Text//凭证号
else
ls_u8key = iXMLDOM.selectSingleNode("ufinterface").childNodes().Attributes.getNamedItem("key").Text//生成U8数据的关键字
end if
//更新日志 end if
destroy ixmldom
as_u8key = ls_u8key
Return
原创:王春天 2013.11.04