2016-11-08 3 views
1

Ich habe eine .vbs entwickelt, um eine SOAP-Web-Services wie folgt aufzurufen. Während der Ausführung erhalte ich den Fehlercode 500. Bitte teilen Sie Ihre Ideen mit, wenn Sie dies zuvor gesehen haben.Aufruf SOAP-Web-Services mit Parameter konfrontiert Fehlercode: 500 Interner Server Fehler

Ich verwende Windows 7, um diese Datei auszuführen.

enter image description here

Dim dt 
mydt = Now() 
mm = add0(Month(mydt)) 
dd = add0(Day(mydt)) 
hh = add0(Hour(mydt)) 
mn = add0(Minute(mydt)) 
ss = add0(second(mydt)) 
'WScript.Echo (Year(mydt)) & mm & dd & hh & mm & ss 
'short-name: Max 8 char 
dt = mm & dd & hh & mm 

Function add0 (testIn) 
    Select Case Len(testIn) < 2 
    Case True 
     add0 = "0" & testIn 
    Case Else 
     add0 = testIn 
    End Select 
End Function 
Set objFSO = CreateObject("Scripting.FileSystemObject") 

objStartFolder = "C:\test" 

Set objFolder = objFSO.GetFolder(objStartFolder) 

Set colFiles = objFolder.Files 

For Each objFile In colFiles 
    strFileName = objFile.Name 
    If objFSO.GetExtensionName(strFileName) = "xml" Then 
    strUrl = "http://IP:Server/dummy" 
    strRequest = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/""" &_ 
       " xmlns:v1=""http://crsoftwareinc.com/xml/ns/titanium/newbiz/newbusinessuploadreleaseservice/v1_0""" &_ 
       " xmlns:v11=""http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0""" &_ 
       " <soapenv:Header>/" &_ 
       " <soapenv:Body>" &_ 
       " <v1:new-business-upload-release-request>" &_ 
       " <v1:new-business-upload-dto>" &_ 
       " <v11:ID>ID="& dt &"</v11:ID>" &_ 
       " <v11:file-name>"& objFile.Name &"</v11:file-name>" &_ 
       " <v11:manual-upload>""false</v11:manual-upload>" &_ 
       " <v11:auto-linking-enabled-flag>""true</v11:auto-linking-enabled-flag>" &_ 
       " <v11:auto-merging-enabled-flag>""true</v11:auto-merging-enabled-flag>" &_ 
       " <v11:strategy-option-choice>""USE_CREDITOR_DEFAULT_STRATEGY</v11:strategy-option-choice>" &_ 
       " <v11:account-strategy-option-choice>""USE_CREDITOR_DEFAULT_STRATEGY</v11:account-strategy-option-choice>" &_ 
       " <v11:auto-release>""true</v11:auto-release>" &_ 
       " </v1:new-business-upload-dto>" &_ 
       " <v1:web-service-request-version>""2</v1:web-service-request-version>" &_ 
       " </v1:new-business-upload-release-request>" &_ 
       "</soapenv:Body>" &_ 
       "</soapenv:Envelope>" 
    End If 
Next 
Dim http 
Set http = createObject("Msxml2.ServerXMLHTTP") 
http.Open "POST", strUrl, False 
http.setRequestHeader "Authorization", "Basic 123" 
http.setRequestHeader "Content-Type", "text/xml" 
http.send strRequest 
If http.Status = 200 Then 
    WScript.Echo "RESPONSE : " & http.responseXML.xml 
Else 
    WScript.Echo "ERRCODE : " & http.status 
+0

Die 'add0()' Funktion ist eine Menge Overhead für das, was gerade mit 'mm = Richtig ("00", & Monat (mydt), 2) 'etc. – Lankymart

+0

In Bezug auf die Frage ein HTTP 500 gleichgesetzt werden sollte Fehler tritt auf, wenn der Server einen Fehler feststellt und wahrscheinlich versucht, Ihre Anfrage zu parsen. Ich frage mich nur, was das '' '' in vielen Ihrer '' Elemente bedeutet? Ich stelle mir vor, dass der Web-Service die Anfrage abruft und einen Wert wie "USE_CREDITOR_DEFAULT_STRATEGY" abruft und sich fragt, was damit zu tun ist oder dass er nicht serialisiert wird und einen Fehler erzeugt. – Lankymart

Antwort

0

Ihre XML-Daten sind ungültig. Das öffnende <soapenv:Envelope> Tag fehlt die schließende eckige Klammer und der End-Schrägstrich für das Tag <soapenv:Header> Tag ist nach der schließenden eckigen Klammer.

ändert diese:

strRequest = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/""" &_ 
      " xmlns:v1=""http://crsoftwareinc.com/xml/ns/titanium/newbiz/newbusinessuploadreleaseservice/v1_0""" &_ 
      " xmlns:v11=""http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0""" &_ 
      " <soapenv:Header>/" &_ 
      ... 

in dieser:

strRequest = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/""" &_ 
      " xmlns:v1=""http://crsoftwareinc.com/xml/ns/titanium/newbiz/newbusinessuploadreleaseservice/v1_0""" &_ 
      " xmlns:v11=""http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0"">" &_ 
      " <soapenv:Header/>" &_ 
      ... 

Auch Sie mm zweimal in dem Bau von dt verwenden:

dt = mm & dd & hh & mm 

Es soll wohl seine

Wenn das das Problem nicht behebt, müssen Sie möglicherweise die Webserver-Protokolle überprüfen (Fehler 500 ist ein serverseitiger Fehler) und/oder in der API-Dokumentation nachsehen, ob die gesendete Anforderung korrekt ist bilden.

Verwandte Themen