调用第三方API加载XML时出现'800a01a8'对象缺失错误求助
问题描述
运行IIS 8.5的Windows Server 2012生产服务器近期出现以下错误:
Microsoft VBScript 运行时错误 '800a01a8'
需要对象: 'MERCHANTmydoc.documentElement'
错误指向代码行:
Set MERCHANTmydoc=Server.CreateObject("Microsoft.xmlDOM")
问题发生期间无代码变更,商户方也确认API未改动。用Postman测试相同API字符串(填入有效参数)能得到正常响应,凭证有效,怀疑是IIS问题但不知如何排查。
核心业务代码
MERCHANTstrXML = "<txn><ssl_merchant_ID>" & MERCHANT_ID & "</ssl_merchant_ID><ssl_user_id>" & MERCHANT_USER & "</ssl_user_id><ssl_pin>" & MERCHANT_PIN & "</ssl_pin><ssl_transaction_type>ccsale</ssl_transaction_type><ssl_card_number>" & merchant_card_number & "</ssl_card_number><ssl_exp_date>" & merchant_exp_date & "</ssl_exp_date><ssl_amount>" & merchant_trans_amount & "</ssl_amount><ssl_salestax>" & merchant_sales_tax & "</ssl_salestax>" & merch_indicator_var & "<ssl_cvv2cvc2>" & merchant_cvv2_code & "</ssl_cvv2cvc2><ssl_invoice_number>" & merchant_invoice_number & "</ssl_invoice_number><ssl_customer_code>" & merchant_customer_code & "</ssl_customer_code><ssl_first_name>" & merchant_first_name & "</ssl_first_name><ssl_last_name>" & merchant_last_name & "</ssl_last_name><ssl_avs_address>" & merchant_add1 & "</ssl_avs_address><ssl_avs_zip>" & merchant_zip & "</ssl_avs_zip><ssl_email>" & merchant_email & "</ssl_email><ssl_test_mode>" & MERCHANT_Test_Mode & "</ssl_test_mode></txn>" if session("CHARGED") = "YES" then ' 不执行任何操作 else Set MERCHANTxmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP") MERCHANTxmlhttp.Open "POST","https://api.convergepay.com/VirtualMerchant/processxml.do?xmldata=" & MERCHANTstrXML,false MERCHANTxmlhttp.send MERCHANTresponsexml = MERCHANTxmlhttp.responseText Set MERCHANTmydoc=Server.CreateObject("Microsoft.xmlDOM") MERCHANTmydoc.async= false MERCHANTmydoc.loadxml(MERCHANTresponsexml)
本地测试脚本问题
使用测试脚本验证XML请求时,出现错误:
正在向 http://localhost:8096/cart/receive3.asp 发送XML数据
msxml3.dll 错误 '80072efd'
无法与服务器建立连接
/cart/post3.asp,第12行
测试发送脚本(post3.asp)
<% '// 要发送XML数据的目标URL URL="http://localhost:8096/cart/receive3.asp" Response.Write "正在向 " & URL & " 发送XML数据<br/>" information = "<Send><UserName>test</UserName><PassWord>user</PassWord><Data>100</Data></Send>" Set xmlhttp = server.Createobject("MSXML2.ServerXMLHTTP") xmlhttp.Open "POST", url, false xmlhttp.setRequestHeader "Content-Type", "text/xml" xmlhttp.send information '// 输出目标页面的响应结果 response.write "收到响应:<hr/><span style='color:blue'>" & xmlhttp.ResponseText & "</span><hr/>" %>
测试接收脚本(receive3.asp)
<% Dim objXmlRequest Set objXmlRequest = Server.CreateObject("MSXML2.DOMDOCUMENT.3.0") IF objXmlRequest.Load (Request) THEN ' 获取客户端发送的请求数据 strQuery = "//UserName" Set oNode = objXmlRequest.selectSingleNode(strQuery) strActionName = oNode.Text response.write "成功! 用户名是 " & strActionName ELSE Response.Write "加载XML文件失败,原因: " & objXmlRequest.parseError.reason END IF %>
内容的提问来源于stack exchange,提问作者T. Milliken
相关产品推荐
相关产品推荐

