Ik probeer m'n eigen webservice aan te roepen waar ik een bepaald complex type in moet stoppen. Dat kan met SOAP toolkit 3.0, maar ik krijg het niet aan de praat. Een custom data type mapper maken is geen optie, omdat hiervoor een ActiX DLL geregistreerd moet worden op de webserver. Gelukkig is het volgens de documentatie ook mogelijk om een IXMLDOMNodeList te gebruiken, maar dat is juist waar ik op vastloop. Ter illustratie, de code voor het aanroepen:
Dat object "Soap" is prima, SoapAuthentication is gewoon een functie die een SoapClient maakt en initialiseert met een WSDL. Ook de XML die gegenereerd wordt uit de regels die erboven staan, is correct, dus dat is het zeker niet. Ook is Doc.documentElement.childNodes echt van het type IXMLDOMNodeList, volgens de TypeName() functie.
Het probleem is meer dat bij de aanroep van de SetUserProperties methode, ik de volgende fout krijg:
En daarom gok ik dus dat hij niet snapt dat ik er een IXMLDOMNodeList in stop. Ik heb al geprobeerd Doc en Doc.documentElement mee te sturen, maar hij blijft die cryptische foutmeldig geven...
Wat oh wat doe ik toch fout?
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| Sub SetUserProperties(AuthenticationCode, PortletCode, Properties) //Nodelist opbouwen Dim Doc, FieldData, FieldDataValue, FieldDataName, Name Set Doc = Server.CreateObject("Microsoft.XMLDOM") Set Doc.documentElement = Doc.createElement("Properties") For Each Name In Properties.Keys Set FieldData = Doc.createElement("FieldData") Set FieldDataName = Doc.createAttribute("Name") FieldDataName.text = Name FieldData.attributes.setNamedItem(FieldDataName) Set FieldDataValue = Doc.createElement("Value") FieldDataValue.text = Properties.Item(Name) FieldData.appendChild(FieldDataValue) Doc.documentElement.appendChild(FieldData) Next //Webservice aanroepen Dim Soap Set Soap = SoapAuthentication Soap.SetUserProperties AuthenticationCode, PortletCode, Doc.documentElement.childNodes //Opruimen Set Soap = Nothing Set Doc = Nothing End Sub |
Dat object "Soap" is prima, SoapAuthentication is gewoon een functie die een SoapClient maakt en initialiseert met een WSDL. Ook de XML die gegenereerd wordt uit de regels die erboven staan, is correct, dus dat is het zeker niet. Ook is Doc.documentElement.childNodes echt van het type IXMLDOMNodeList, volgens de TypeName() functie.
Het probleem is meer dat bij de aanroep van de SetUserProperties methode, ik de volgende fout krijg:
code:
1
| Typen komen niet met elkaar overeen: 'Soap.SetUserProperties' |
En daarom gok ik dus dat hij niet snapt dat ik er een IXMLDOMNodeList in stop. Ik heb al geprobeerd Doc en Doc.documentElement mee te sturen, maar hij blijft die cryptische foutmeldig geven...
Wat oh wat doe ik toch fout?
日本!🎌