Hank Ratzesberger wrote:

I am finally back to writing my OXF application and I am really excited. But my first attempt to consume a
web service is stalled.


Is there a code snippet to simply dump the response
I get as text? Why does the ca-traffic sample require 3 processors?

Hi Hank,


To call a Web service you just need one processor: the delegation processor. For instance, you can call the traffic Web service with:

<p:processor uri="oxf/processor/delegation">
    <p:input name="interface">
        <config>
            <service id="ca-traffic" type="webservice"
                endpoint=
                "http://services.xmethods.net/soap/servlet/rpcrouter";>
                <operation nsuri="urn:xmethods-CATraffic"
                   name="getTraffic"/>
            </service>
        </config>
    </p:input>
    <p:input name="call">
        <delegation:execute service="ca-traffic"
               operation="getTraffic">
            <hwynums>101</hwynums>
        </delegation:execute>
    </p:input>
    <p:input name="data"><dummy/></p:input>
    <p:output name="data" id="traffic"/>
</p:processor>

Note that there are two important inputs to this service. The "interface" input describes the service to be called (endpoint, operation). This description could be stored in static file and referenced every time you use the delegation processor. The "call" input tells the delegation processor what service to call (declared in the "interface"), and what is the XML to be sent to the service (here: <hwynums>101</hwynums>).

In the online example, the highway number is dynamic: it comes from the XForms instance. So the "call" input is connected to XSLT processor, which extracts the actual highway number from the XForms instance.

Borrowing from your ca=-traffic example, the code below executes the webservice correctly, according to the SOAP
monitor program. However, I get a single empty element
(I think -- I just want to see the whole message).

In your case, you don't need the stylesheet, because the data you send to the service is not dynamic. So you can make your pipeline simpler. You'll find an updated version of your pipeline attached to this email.


I ran it, and also get an empty result (just a root element with no content). So there is nothing wrong with your code. I think may just not send the appropriate information for this service. Do you happen to have the WSDL for this Web service?

Alex

<p:config xmlns:p="http://www.orbeon.com/oxf/pipeline";
    xmlns:delegation="http://orbeon.org/oxf/xml/delegation";>

    <p:processor uri="oxf/processor/delegation">
        <p:input name="interface">
            <config>
                <service id="standardPersonService" type="webservice"
                    
endpoint="http://www.nacse.org/neesSiteSpecs/services/StandardPersonService";>
                    <operation nsuri="http://service.ssdb.nacse.org"; 
name="getAllPersons"
                        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
                </service>
            </config>
        </p:input>
        <p:input name="data"><dummy/></p:input>
        <p:input name="call">
            <delegation:execute service="standardPersonService" 
operation="getAllPersons"/>
        </p:input>
        <p:output name="data" id="persons"/>
    </p:processor>
    
    <p:processor uri="oxf/processor/xml-serializer">
        <p:input name="config"><config/></p:input>
        <p:input name="data" href="#persons"/>
    </p:processor>

</p:config>
_______________________________________________
oxf-users mailing list
[EMAIL PROTECTED]
http://mail.orbeon.com/mailman/listinfo/oxf-users

Reply via email to