Hallo,
ich habe eine eigene Anwendung, die auf zwei Arten Daten an eine XML-Schnittstelle schickt und dann die Ergebnisse auswertet. Unter Windows XP und Windows 2008 R2 läuft das super. Jetzt habe ich die Anwendung unter Windows 2012 R2 getestet.
Problem ist, dass dort die ganze Anwendung einfach abstürzt. Es heißt dann "importIT" funktioniert nicht mehr und das wars. Im Eventlog weist die Meldung auf ein Netzwerkproblem hin (könnte sein, Windows2012R2 hat laut Internet manchmal eine verzögerte Netzwerkverbindung wenn es virtuell läuft).
1) Kann ich diesen Fehler irgendwie finden / abfangen / vermeiden, also auch dann, wenn die Netzwerkverbindung etwas latent läuft?
2) Verwende ich die richtigen Komponenten für den XML-Transfer?
Danke für Eure Tipps.
Variante 1
Public Function callWebAPI() as boolean
Dim objDom As Object
Dim objXmlHttp As Object
Dim strRet As String
callWebAPI = False
Dim xmlXMLtext, getXMLAdress as String
xmlXMLtext = "<?xml version=""1.0""" & _
"encoding=""iso-8859-1""?><DATA><ACTION><do>Vorgang" & _
"</do></ACTION><LOGDATA><login>usr</login>" & _
"lt#pwd>123</pwd></LOGDATA></DATA>" getXMLAdress = _
"https://www.mydomain.com/send.asp"
On Error GoTo errHandler01
' Create objects to DOMDocument and XMLHTTP
Set objDom = CreateObject("MSXML2.DOMDocument")
Set objXmlHttp = CreateObject("MSXML2.XMLHTTP")
' Load XML
objDom.async = False
objDom.loadXML xmlXMLtext
'Open the webservice
objXmlHttp.Open "POST", getXMLAdress, False
objXmlHttp.setRequestHeader "Content-Type", _
"application/x-www-form-urlencoded"
objXmlHttp.setRequestHeader "Encoding", "UTF-8"
objXmlHttp.send ("name=" & UrlEncode(objDom.xml))
' Get all response text from webservice
strRet = objXmlHttp.responseBody
Set objXmlHttp = Nothing
Set objDom = Nothing
callWebAPI = True
'// Fehlerbehandlung XML
Exit Function
errHandler01:
MsgBox "Es steht kein Internetzugang zur Verfügung!" & vbCrLf & _
"Wiederholen Sie diese Aktion später, es wurde NICHTS geändert!" & vbCrLf _
& vbCrLf & "Internet-Fehler i-2: " & Err.Description, vbCritical + _
vbOKOnly, "Fehler"
callWebAPI = False
Err.Clear
Exit Function
End Function Variante 2
Public Function runXMLscript1 as boolean
runXMLscript1 = false
Dim start As Variant
Dim vartmp As Variant
Dim strLogdataXML As String
Dim strDebugcodeXML As String
Dim strXMLout As String
start = Timer
strXMLurl = "https://www.mydomain.com/send.asp"
strXMLout = "<?xml version=""1.0""" & _
"encoding=""iso-8859-1""?><DATA><ACTION><do>Vorgang1#lt" & _
"/do></ACTION><LOGDATA><login>usr</login><pwd>123</pwd></LOGDATA></DATA>"
'XML an Schnittstelle senden
Set XMLHTTP = CreateObject("Msxml2.ServerXMLHTTP.3.0")
With XMLHTTP
.Open "POST", strXMLurl, False
.setTimeouts 5000, 5000, 8000, 300000
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.setRequestHeader "Encoding", "UTF-8"
.send ("name=" & UrlEncode(strXMLout))
End With
Call LogfileIntranet("SEND", "", "GetAll2 gesendet", LoginUsername, "1")
vartmp = XMLHTTP.responseBody
Dim objRS, objOrderNodes, objOrderNode As Variant
Dim objXML As Variant
Set objXML = XMLHTTP.responseXML
objXML.loadXML (vartmp)
If (objXML.parseError.errorCode <> 0) Then MsgBox "err113-002:" & _
"XML-Parse-Fehler" & objXML.parseError.reason & " '" & _
objXML.parseError.srcText & "' " & " Zeile: " & objXML.parseError.Line & "," & _
"Zeichen: " & objXML.parseError.linepos, vbCritical, "XML-Rückgabefehler," & _
"Syntax nicht richtig"
runXMLscript1 = true
End Function |