[SOAP]request doen in JavaScript

Pagina: 1
Acties:

  • FitNiX
  • Registratie: April 2001
  • Laatst online: 31-08 12:15
Ben bezig een SOAP request aan het maken in Javascript, Ik heb gebruik gemaakt van de SOAP toolkit, en daar stond een voorbeeldje in met een VBScript (ASP). Die werkte prima.
Alleen probeer ik hem nu om te bouwen zodat de request gedaan wordt in javascript. onderstaande code vond ik hiero
code:
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
/*Javascript die de SOAP request zou moeten doen*/

function request()
{
    // Build a SOAP request, initiate asynchronous call.
    var request = new WebServices.SOAP.Request();
    request.operationName = "getTemp";
    request.operationNsURI = "urn:xmethods-Temperature";
    request.body.add(new WebServices.SOAP.Value("zipcode", "02139"));
    request.transport.url = "http://services.xmethods.net/soap/servlet/rpcrouter";
    request.onComplete = onGetTemperatureComplete;
    request.call(); 

    function onGetTemperatureComplete(response) {
        if(response.failed) {
            Agent.Log.writeError("Call to temperature service failed. " + response.error);
            return;
        }
        Agent.Log.writeMessage("Temperature service returned \"" + response.result.value + "\".");
    }

    // Use a WSDL file to help create the same request.
    var tempService = WebServices.WSDL.createService("wsdl/Temperature.wsdl");
    var request = tempService.createRequest("getTemp");
    request.body.zipcode = "02139";
    request.onComplete = onGetTemperatureComplete;
    request.call();
}

Ik roep deze functie aan in een HTML bestand.

Maar krijg deze foutmelding:
Afbeeldingslocatie: http://members.home.nl/renspontier/javascript_error.jpg

Er staan namelijk geen voorbeelden met Javascript in de SOAP toolkit. :/
Wie snapt er wat er fout gaat :? Ik niet nml... :'(

[edit]
Sorry voor de layout..... :o
[/edit]

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Wat er fout gaat is eigenlijk heel simpel.. IE heeft geen ID wat WebServices is. Misschien kun je het beste nog ff de IBM-site doornemen om te kijken of dit uberhaupt wel voor de clientside bedoeld is, en zo ja of de client mischien nog 1 of andere 'scriptengine' van IBM moet installeren.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • FitNiX
  • Registratie: April 2001
  • Laatst online: 31-08 12:15
Janoz schreef op 23 september 2002 @ 12:17:
Wat er fout gaat is eigenlijk heel simpel.. IE heeft geen ID wat WebServices is. Misschien kun je het beste nog ff de IBM-site doornemen om te kijken of dit uberhaupt wel voor de clientside bedoeld is, en zo ja of de client mischien nog 1 of andere 'scriptengine' van IBM moet installeren.
Thnx, ik zal eens ff gaan kijken. :) Wel stom dat ze dat er niet bij vertellen op die andere site :(

  • FitNiX
  • Registratie: April 2001
  • Laatst online: 31-08 12:15
Janoz schreef op 23 september 2002 @ 12:17:
Wat er fout gaat is eigenlijk heel simpel.. IE heeft geen ID wat WebServices is. Misschien kun je het beste nog ff de IBM-site doornemen om te kijken of dit uberhaupt wel voor de clientside bedoeld is, en zo ja of de client mischien nog 1 of andere 'scriptengine' van IBM moet installeren.
Maar het is toch wel mogelijk om met javascript een soap request te doen? Zonder dat de SOAP Toolkit daarbij op de client is geïnstalleerd :? :? ??

  • MrBrown
  • Registratie: Augustus 2000
  • Laatst online: 11-06 15:51

MrBrown

Reservoir Dog

Kermit schreef op 23 september 2002 @ 13:10:
[...]
Maar het is toch wel mogelijk om met javascript een soap request te doen? Zonder dat de SOAP Toolkit daarbij op de client is geïnstalleerd :? :? ??
Eigen SOAP implementatie schrijven?!? ;)

Ik weet niet hoe moeilijk jou requests zijn (ivm authentication enzo), maar het moet in principe wel kunnen denk ik. Een SOAP envelope zit ook weer niet zo moeilijk in elkaar....

Powered by Manetti (compiled by Jura)


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Kermit schreef op 23 september 2002 @ 13:10:
[...]
Maar het is toch wel mogelijk om met javascript een soap request te doen? Zonder dat de SOAP Toolkit daarbij op de client is geïnstalleerd :? :? ??


Tuurlijk zou dat wel kunnen, maar als je de SOAP Toolkit niet op de client geinstaleerd hebt, kun je er natuurlijk ook geen gebruik van maken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • FitNiX
  • Registratie: April 2001
  • Laatst online: 31-08 12:15
Ik bedoel dus dat mijn javascript een soap request doet door een stukje XML te sturen, dit is goed mogelijk zonder dat de toolkit is geinstalleerd. Aldus mijn begeleider ;) .

  • MrBrown
  • Registratie: Augustus 2000
  • Laatst online: 11-06 15:51

MrBrown

Reservoir Dog

Dat zeg ik, eigen SOAP implementatie schrijven.... :) Op w3c.org staat de hele specificatie, dus die even door gaan lezen... Ik heb het zelf nooit gedaan hoor, maar het moet inderdaad goed te doen zijn....

Powered by Manetti (compiled by Jura)


  • FitNiX
  • Registratie: April 2001
  • Laatst online: 31-08 12:15
MrBrown schreef op 23 september 2002 @ 14:37:
Dat zeg ik, eigen SOAP implementatie schrijven.... :) Op w3c.org staat de hele specificatie, dus die even door gaan lezen... * FitNiX Ik heb het zelf nooit gedaan hoor, maar het moet inderdaad goed te doen zijn....
Dat is makkelijker gezegd dan gedaan.
Moet je het maar eens proberen, zo makkelijk vind ik het niet hoor :o :o

[ Voor 0% gewijzigd door FitNiX op 23-09-2002 15:46 . Reden: Typo's ]


  • FitNiX
  • Registratie: April 2001
  • Laatst online: 31-08 12:15
Ik weet het, ik weet het. Het is idd een hoop tekst :o

* FitNiX Javascript file
code:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*  method = de methode die binnen komt via de HTML aanroep
    number1 is het 1e getal dat binnenkomt
    number2 is het 2e getal dat binnenkomt.
*/

function request(method, number1, number2, blaat)
{
//Active X Object inititaliseren\\
    var xmlhttp
    @cc_on
    @if (@_jscript_version >= 5)
        try
        {
            xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")
        }
        catch (e)
        {
            try
            {
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
            }
            catch (E)
            {
                xmlhttp=false
            }
        }
    @else
        xmlhttp=false
    @end

    if (!xmlhttp)
    {
        try
        {
            xmlhttp = new XMLHttpRequest();
        }
        catch (e)
        {
            xmlhttp=false
        }
    }
     xmlhttp.open("POST", "http://localhost/javascript/DocSample1.wsdl",true);
     xmlhttp.onreadystatechange=function() 
     {
        if (xmlhttp.readyState==4) 
        {
            alert(xmlhttp.responseText)
        }
     }

//SOAP Request bouwen\\
    xmlhttp.setRequestHeader("man","POST http://localhost/javascript/DocSample1.wsdl HTTP/1.1")
    xmlhttp.setRequestHeader("MessageType","request")
    xmlhttp.setRequestHeader("Content-Type","text/xml")
    xmlhttp.setRequestHeader("SOAPAction:","uri:http://localhost/javascript/DocSample1.dll")

    var zendtext;
    zendtext    =   '<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n'
    zendtext    +=  '<SOAP-ENV:Envelope'
    zendtext    +=  ' xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" '
    zendtext    +=  ' SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">\n'
    zendtext    +=  '<SOAP-ENV:Body xmlns:xsd="http://schemas.xmlsoap.org/soap/body/">\n'
    zendtext    +=  '<Sample1:' + method + '>\n'
    zendtext    +=  '<Sample1:NumberOne>' + number1 + '</Sample1:NumberOne>\n'
    zendtext    +=  '<Sample1:NumberTwo>' + number2 + '</Sample1:NumberTwo>\n'
    zendtext    +=  '</Sample1:' + method + '>\n'
    zendtext    +=  '<Sample1:EchoString>\n'
    zendtext    +=  '<Sample1:testString>' + blaat + '</Sample1:teststring>\n'
    zendtext    +=  '</Sample1:EchoString>\n'
    zendtext    +=  '</SOAP-ENV:Body>\n'
    zendtext    +=  '</SOAP-ENV:Envelope>'

    alert(zendtext);
    xmlhttp.send(zendtext);
}

* FitNiX WSDL file
code:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<definitions name ='DocSample1'   targetNamespace = 'http://tempuri.org/wsdl/'
    xmlns:wsdlns='http://tempuri.org/wsdl/' 
    xmlns:typens='http://tempuri.org/type' 
    xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' 
    xmlns:xsd='http://www.w3.org/2001/XMLSchema' 
    xmlns:stk='http://schemas.microsoft.com/soap-toolkit/wsdl-extension'
    xmlns='http://schemas.xmlsoap.org/wsdl/'> 
  <types>
    <schema targetNamespace='http://tempuri.org/type'
      xmlns='http://www.w3.org/2001/XMLSchema'
      xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'
      xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'>
    </schema>
  </types>
  <message name='Sample1.EchoString'>
    <part name='testString' type='xsd:string'/>
  </message>
  <message name='Sample1.EchoStringResponse'>
    <part name='Result' type='xsd:string'/>
  </message>
  <message name='Sample1.AddNumbers'>
    <part name='NumberOne' type='xsd:double'/>
    <part name='NumberTwo' type='xsd:double'/>
  </message>
  <message name='Sample1.AddNumbersResponse'>
    <part name='Result' type='xsd:double'/>
  </message>
  <message name='Sample1.SubtractNumbers'>
    <part name='NumberOne' type='xsd:double'/>
    <part name='NumberTwo' type='xsd:double'/>
  </message>
  <message name='Sample1.SubtractNumbersResponse'>
    <part name='Result' type='xsd:double'/>
  </message>
  <portType name='Sample1SoapPort'>
    <operation name='EchoString' parameterOrder='testString'>
      <input message='wsdlns:Sample1.EchoString' />
      <output message='wsdlns:Sample1.EchoStringResponse' />
    </operation>
    <operation name='AddNumbers' parameterOrder='NumberOne NumberTwo'>
      <input message='wsdlns:Sample1.AddNumbers' />
      <output message='wsdlns:Sample1.AddNumbersResponse' />
    </operation>
    <operation name='SubtractNumbers' parameterOrder='NumberOne NumberTwo'>
      <input message='wsdlns:Sample1.SubtractNumbers' />
      <output message='wsdlns:Sample1.SubtractNumbersResponse' />
    </operation>
  </portType>
  <binding name='Sample1SoapBinding' type='wsdlns:Sample1SoapPort' >
    <stk:binding preferredEncoding='UTF-8'/>
    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http' />
    <operation name='EchoString' >
      <soap:operation soapAction='http://tempuri.org/action/Sample1.EchoString' />
      <input>
        <soap:body use='encoded' namespace='http://tempuri.org/message/'
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
      </input>
      <output>
        <soap:body use='encoded' namespace='http://tempuri.org/message/'
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
      </output>
    </operation>
    <operation name='AddNumbers' >
      <soap:operation soapAction='http://tempuri.org/action/Sample1.AddNumbers' />
      <input>
        <soap:body use='encoded' namespace='http://tempuri.org/message/'
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
      </input>
      <output>
        <soap:body use='encoded' namespace='http://tempuri.org/message/'
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
      </output>
    </operation>
    <operation name='SubtractNumbers' >
      <soap:operation soapAction='http://tempuri.org/action/Sample1.SubtractNumbers' />
      <input>
        <soap:body use='encoded' namespace='http://tempuri.org/message/'
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
      </input>
      <output>
        <soap:body use='encoded' namespace='http://tempuri.org/message/'
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
      </output>
    </operation>
  </binding>
  <service name='DocSample1' >
    <port name='Sample1SoapPort' binding='wsdlns:Sample1SoapBinding' >
      <soap:address location='http://localhost/javascript/DocSample1.wsdl' />
    </port>
  </service>
</definitions>

Ben alweer een stukkie verder, heb de aanroep voor elkaar *D
Alleen krijg ik wel nog een foutmelding, kreeg op Google ook al geen hits naar het probleem.
Nog SOAP experts die zien wat er fout gaat?? :?

Afbeeldingslocatie: http://members.home.nl/renspontier/error_js.jpg

[lay-out]
Sorry! :> :>
[/lay-out]

[ Voor 0% gewijzigd door FitNiX op 24-09-2002 17:26 . Reden: typo's ]

Pagina: 1