Marshalling JAXB into SOAP envelope

Hello one and all
I have an issue with a project at the moment . I have marshalled an XML document from the schema but I now want to place the contents into a SOAP envelope I believe that i place it as an attachment but i was wondering is there any way of embedding it into the envelope body directly during the marshalling process. Any help would be much appreciated!

HTTP is HTPP... mostly.
In other words, the application protocol is stand and specified in RFC2616 (http://www.w3.org/Protocols/rfc2616/rfc2616.html)
The exception is specific proprietary extensions.. like for example Microsoft's NTLM authentication handshake.
The UTL_HTTP interface supports the protocol pretty well as per the protocol's specification. So using it to interact with a a web service should not be a major issue. The protocol is standard (e.g. POST command is used to supply the payload to the web service). The only real issue is formatting the payload for that as per what the web service expect. And that has nothing to do with HTTP itself - or UTL_HTTP. It is simply the delivering mechanism.
Getting that mechanism to work is fairly easy and should not pose a problem. Instead I suggest you focus on exactly how the HTTP payload needs to look like. Does that web service expects any specific name-values in the header? What does it expect in the body? Etc.

Similar Messages

  • WCF request with utl_dbws how to add Header into SOAP envelope

    I’m trying to make WCF (Windows Communication Foundation) request and using for that utl_dbws package.
    After making request (calling utl_dbws.invoke) it will give error “ORA-29532: Java call terminated by uncaught Java exception: javax.xml.rpc.soap.SOAPFaultException: The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect t”
    I turned on logging (utl_dbws.set_logger_level) I see that system sends standard SOAP envelope and does not have Header at all. How can I use my own SOAP envelope and/or add Header.
    All info that logging give is:
    ServiceFacotory: oracle.j2ee.ws.client.ServiceFactoryImpl@eec8c59c
    WSDL: null
    Service: oracle.j2ee.ws.client.BasicService@7c110d23
    *** Created service: -677524827 - oracle.jpub.runtime.dbws.DbwsProxy$ServiceProxy@562bd0c4 ***
    ServiceProxy.get(-677524827) = oracle.jpub.runtime.dbws.DbwsProxy$ServiceProxy@562bd0c4
    getOperationInfo return NULL: port={http://tempuri.org/Service/}BasicHttpBinding_Service, operation={http://tempuri.org/Service/}GetLov
    setProperty(javax.xml.rpc.soap.http.soapaction.use, true)
    setProperty(javax.xml.rpc.soap.http.soapaction.uri, http://tempuri.org/Service/GetLov)
    setProperty(javax.xml.rpc.encodingstyle.namespace.uri, http://www.w3.org/2005/08/addressing)
    setProperty(javax.xml.rpc.security.auth.username, DefaultUser)
    setProperty(javax.xml.rpc.security.auth.password, MySecretPassword)
    <GetLOV xmlns="http://tempuri.org/"> <request xmlns:d4p1="http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <d4p1:AgentCode>AGENT</d4p1:AgentCode> <d4p1:Language>ENG</d4p1:Language> <d4p1:ProcessName>test</d4p1:ProcessName> </request></GetLOV>
    Attribute 0: http://tempuri.org/: xmlns, http://tempuri.org/
    createElement(GetLOV,null,http://tempuri.org/)
    Attribute 0: http://tempuri.org/: xmlns, http://tempuri.org/
    dbwsproxy.element.node.child.0: 1, null
    dbwsproxy.add.map: d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
    Attribute 0: http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request: xmlns:d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
    dbwsproxy.add.map: i, http://www.w3.org/2001/XMLSchema-instance
    Attribute 1: http://www.w3.org/2001/XMLSchema-instance: xmlns:i, http://www.w3.org/2001/XMLSchema-instance
    createElement(request,null,http://tempuri.org/)
    dbwsproxy.add.soap.element.namespace: d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
    Attribute 0: http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request: xmlns:d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
    dbwsproxy.add.soap.element.namespace: i, http://www.w3.org/2001/XMLSchema-instance
    Attribute 1: http://www.w3.org/2001/XMLSchema-instance: xmlns:i, http://www.w3.org/2001/XMLSchema-instance
    dbwsproxy.element.node.child.0: 1, null
    dbwsproxy.lookup.map: d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
    createElement(d4p1:AgentCode,null,http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request)
    dbwsproxy.text.node.child.0: 3, E01306
    dbwsproxy.element.node.child.1: 1, null
    dbwsproxy.lookup.map: d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
    createElement(d4p1:Language,null,http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request)
    dbwsproxy.text.node.child.0: 3, ENG
    dbwsproxy.element.node.child.2: 1, null
    dbwsproxy.lookup.map: d4p1, http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request
    createElement(d4p1:ProcessName,null,http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request)
    dbwsproxy.text.node.child.0: 3, tesr
    request:
    <GetLOV xmlns="http://tempuri.org/">
    <request xmlns:d4p1="http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
    <d4p1:AgentCode>AGENT</d4p1:AgentCode>
    <d4p1:Language>ENG</d4p1:Language>
    <d4p1:ProcessName>test</d4p1:ProcessName>
    </request>
    </GetLOV>
    13.05.2010 14:17:28 oracle.j2ee.ws.client.ClientMessages infoAboutToInvokeCallForEndpoint
    INFO: Trying to connect to URL: https://x.y.z/WS/ Service.svc
    13.05.2010 14:17:30 oracle.j2ee.ws.client.StreamingSender _sendImpl
    FINE: StreamingSender.request:<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><env:Body><GetLOV xmlns="http://tempuri.org/"><request xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d4p1="http://schemas.datacontract.org/2004/07/x.y.z.LOV.Request"><d4p1:AgentCode>AGENT</d4p1:AgentCode><d4p1:Language>ENG</d4p1:Language><d4p1:ProcessName>test</d4p1:ProcessName></request></GetLOV></env:Body></env:Envelope>
    13.05.2010 14:17:30 oracle.j2ee.ws.client.StreamingSender _sendImpl
    FINE: StreamingSender.response:<?xml version="1.0" encoding="UTF-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</faultcode><faultstring xml:lang="et-EE">The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the &lt;serviceDebug&gt; configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.</faultstring></s:Fault></s:Body></s:Envelope>
    Exception in thread "Root Thread" javax.xml.rpc.soap.SOAPFaultException: The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.
         at oracle.j2ee.ws.client.StreamingSender._raiseFault(StreamingSender.java:559)
         at oracle.j2ee.ws.client.StreamingSender._sendImpl(StreamingSender.java)
         at oracle.j2ee.ws.client.StreamingSender._send(StreamingSender.java:112)
         at oracle.j2ee.ws.client.dii.CallInvokerImpl.directInvoke(CallInvokerImpl.java:705)
         at oracle.j2ee.ws.client.dii.BasicCall.directInvoke(BasicCall.java:692)
         at oracle.j2ee.ws.client.dii.BasicCall.invoke(BasicCall.java:598)
         at oracle.jpub.runtime.dbws.DbwsProxy$CallProxy.invokeProxy(Unknown Source)
         at oracle.jpub.runtime.dbws.DbwsProxy$CallProxy.access$2600(Unknown Source)
         at oracle.jpub.runtime.dbws.DbwsProxy.invokeProxy(Unknown Source)

    HTTP is HTPP... mostly.
    In other words, the application protocol is stand and specified in RFC2616 (http://www.w3.org/Protocols/rfc2616/rfc2616.html)
    The exception is specific proprietary extensions.. like for example Microsoft's NTLM authentication handshake.
    The UTL_HTTP interface supports the protocol pretty well as per the protocol's specification. So using it to interact with a a web service should not be a major issue. The protocol is standard (e.g. POST command is used to supply the payload to the web service). The only real issue is formatting the payload for that as per what the web service expect. And that has nothing to do with HTTP itself - or UTL_HTTP. It is simply the delivering mechanism.
    Getting that mechanism to work is fairly easy and should not pose a problem. Instead I suggest you focus on exactly how the HTTP payload needs to look like. Does that web service expects any specific name-values in the header? What does it expect in the body? Etc.

  • Read SOAP envelope into ABAP using XSLT?

    Hello,
    I have another problem here and this is really driving me nuts - I just don't get it to work.
    As a reply to a web-service I call I get the following xml file. All I need is an xslt that gets me errorCode and errorDescription into an ABAP structure...
    file:
    <?xml version="1.0" encoding="utf-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <SOAP-ENV:Body>
    <mit:rgo xmlns:mit="http://myurl.com"><mit:TECHNICALHEADER><mit:errorCode>A1014</mit:errorCode><mit:errorDescription>Unable to perform operation</mit:errorDescription><mit:password/><mit:user/><mit:applicationKey/></mit:TECHNICALHEADER><mit:file_creation_date>2005-09-06</mit:file_creation_date><mit:file_creation_time>15:06:33.0</mit:file_creation_time><mit:registration><mit:order_nr>DE999TEST</mit:order_nr><mit:vin>XXXXXXXXXXXXXXX04</mit:vin></mit:registration></mit:rgo>  </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    my corresponding XSLT is:
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:mit=
    "http://myurl.com" xmlns:asx="http://www.sap.com/abapxml" version="1.0">
      <xsl:strip-space elements="*"/>
      <xsl:template match="/">
        <asx:abap>
          <asx:values>
            <SOAP-ENV:Envelope>
              <SOAP-ENV:Body>
                <mit:rgo>
                  <mit:TECHNICALHEADER>
                    <ANSWER>
                      <mit:errorCode>
                        <xsl:value-of select="ERRORCODE"/>
                      </mit:errorCode>
                      <mit:errorDescription>
                        <xsl:value-of select="ERRORCODEDESCRIPTION"/>
                      </mit:errorDescription>
                    </ANSWER>
                  </mit:TECHNICALHEADER>
                </mit:rgo>
              </SOAP-ENV:Body>
            </SOAP-ENV:Envelope>
          </asx:values>
        </asx:abap>
      </xsl:template>
    </xsl:transform>
    What am I doing wrong or what do I need to do? I'm lost!
    Thank you for your help!
    Johannes.

    Thank you Durairaj, as a matter of fact my program is based on your post (one that you pointed me to). For whatever reason I'm not having luck figuring it out (may be just a bit of work pressure) could you please hlep me a bit more by pointing me to where in my program code/xslt I'm going wrong? I somehow feel that it could be my table structure or xslt.
    I would really appreciate it!
    Thanks again,
    erfan.

  • SOMETIMES - Could not load com.sun.xml.messaging.saaj.soap.Envelope

    Hi there,
    Well, it is mysterious - not to say frightning !
    When I first start my tomcat I get an Exception like:; Could not load com.sun.xml.messaging.saaj.soap.Envelope
    The second time it runs well. No Exception about classloading. And the app is nice.
    Hmm, why ? Can�t find out.
    I think that Exception has to have some relation to jars and where they are placed.
    According to the JAXWS-page I placed:
    jaxb-api.jar, jaxws-api.jar, jsr173_api.jar, saaj-api.jar
    in my %JRE_HOME%\lib\endorsed\
    so far so good !
    The rest of the needed jars to run JAX-WS Webservices are in my WEB-INF/lib FOLDER
    activation.jar and so on
    Any Ideas ?
    Here is the Exception I get when I invoke the Service
    INFO: Illegal access: this web application instance has been stopped already. Could not load com.sun.xml.messaging.saaj.soap.Envelope. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
    java.lang.IllegalStateException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1238)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl.getSOAPPart(Message1_1Impl.java:78)
    at com.sun.xml.ws.message.AbstractMessageImpl.readAsSOAPMessage(AbstractMessageImpl.java:177)
    at com.sun.xml.ws.client.dispatch.SOAPMessageDispatch.toReturnValue(SOAPMessageDispatch.java:93)
    at com.sun.xml.ws.client.dispatch.SOAPMessageDispatch.toReturnValue(SOAPMessageDispatch.java:57)
    at com.sun.xml.ws.client.dispatch.DispatchImpl.doInvoke(DispatchImpl.java:188)
    at com.sun.xml.ws.client.dispatch.DispatchImpl.invoke(DispatchImpl.java:192)
    at idff.server.service.ArtifactResolver.resolve(ArtifactResolver.java:101)
    at servlets.AssertionConsumerServlet.doPost(AssertionConsumerServlet.java:149)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:619)
    09.08.2007 14:40:12 org.apache.catalina.core.StandardWrapperValve invoke
    SCHWERWIEGEND: Servlet.service() for servlet AssertionConsumerServlet threw exception
    java.lang.NoClassDefFoundError: com/sun/xml/messaging/saaj/soap/Envelope
    at com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl.getSOAPPart(Message1_1Impl.java:78)
    at com.sun.xml.ws.message.AbstractMessageImpl.readAsSOAPMessage(AbstractMessageImpl.java:177)
    at com.sun.xml.ws.client.dispatch.SOAPMessageDispatch.toReturnValue(SOAPMessageDispatch.java:93)
    at com.sun.xml.ws.client.dispatch.SOAPMessageDispatch.toReturnValue(SOAPMessageDispatch.java:57)
    at com.sun.xml.ws.client.dispatch.DispatchImpl.doInvoke(DispatchImpl.java:188)
    at com.sun.xml.ws.client.dispatch.DispatchImpl.invoke(DispatchImpl.java:192)
    at idff.server.service.ArtifactResolver.resolve(ArtifactResolver.java:101)
    at servlets.AssertionConsumerServlet.doPost(AssertionConsumerServlet.java:149)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:619)
    Listening for transport dt_shmem at address: bundled_tomcat
    Anybody help, please !

    First, thanks for your reply jitu.
    I don�t get this exception anymore.
    Well, your hint was quite right, so I think I may give you the duke stars.
    I found out that putting the jars into the shared/lib don�t work. Maybe it is because I am running 3 tomcat instances at the same time.
    I put all the Jax-ws libs into the tomcat_home/common/lib directory.
    And left the endorsed libs in the java endoresed directory.
    putting the endorsed libs in the tomcat_home/common/lib/endorsed may also work.
    regards and thanks,
    footman

  • XSLT mapping with SOAP Envelope

    Hi
    I'm trying map SOAP response (with Envelope) to pick two values into the target. Here's the data:
    Source (with data):
    <?xml version="1.0"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         <soap:Body>
              <EnumerateResponse xmlns="http://www.approva.net/BizRights/Services">
                   <EnumerateResult>
                        <TaskID>-1</TaskID>
                        <Result>FinishedSuccessfully</Result>
                        <StatusInfo/>
                   </EnumerateResult>
                   <pageObject>
                        <startIndex>0</startIndex>
                        <pageSize>10</pageSize>
                        <totalRows>1</totalRows>
                        <moreRecords>false</moreRecords>
                        <rowsReturned>1</rowsReturned>
                   </pageObject>
                   <xmlObjects>(large string of valid data in here)</xmlObjects>
              </EnumerateResponse>
         </soap:Body>
    </soap:Envelope>
    Target:
    Only need Result and xmlObjects into target.
    Mapping:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
         <xsl:template match="/">
              <poll_status_resp_r3>
                   <Result>
                        <xsl:value-of select="EnumerateResponse/Result"/>
                   </Result>
                   <xmlObjects>
                        <xsl:value-of select="EnumerateResponse/xmlObjects"/>
                   </xmlObjects>
              </poll_status_resp_r3>
         </xsl:template>
    </xsl:stylesheet>
    The values are not getting picked-up into the target.
    What am I missing here?
    Any help is appreciated.

    Hi,
    Save the following XSL file as RSpace.xsl
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="xml" indent="no"/>
      <xsl:template match="/|comment()|processing-instruction()">
        <xsl:copy>
          <xsl:apply-templates/>
        </xsl:copy>
      </xsl:template>
      <xsl:template match="*">
        <xsl:element name="{local-name()}">
          <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
      </xsl:template>
      <xsl:template match="@*">
        <xsl:attribute name="{local-name()}">
          <xsl:value-of select="."/>
        </xsl:attribute>
      </xsl:template>
    </xsl:stylesheet>
    Zip it and import it under Imported Archive.
    In the interface mapping click "+" to add one more mapping.
    Use this XSL as first mapping and your XSL mapping as the second mapping.
    In your XSLT mapping you can use the XPath as
    "Envelope/Body/EnumerateResponse/Result".
    I mean remove the namespace and use the XPATH.
    Thanks,
    Prakash

  • Unsing RequestOneWayBean with Do Not Use SOAP Envelope

    HI All ,
    I have a requriement where Ecc is calling PI with an Asyn Proxy and PI calls a Sync Webservice and gets the Response back and sends the response back to ECC in Async manner . (Async - Sync Bridge).
    I need to call aWeb Service which required specifc SOAP  Headers . SO I have  created a Custom Structure via XSLT mapping and calling the Web Service with the Option  Do Not Use SOAP Envelope as checked . I have also used the RequestResponse Bean & ResponseOneWay Bean in the SOAP Receiver adapter to make the call from Sync to Asyn.  When I execute the Interface the response from the Web Service is  not flowing into PI .
    I am getting the error "Exception caught by adapter framework: InterfaceDetermination did not yield any actual interface" .
    Has anyone worked on the ResponseOneway Bean with parameter "Do Not Use SOAP Envelope as checked" . Can some one please help me out with this issue..
    Thanks
    Regards
    NIlesh Taunk.

    HI Eng ,
    I have not been able to accept the SOAP Fault Response. The link that you have provided above works for accepting the SOAP Fault . But in my case the SOAP Receiver Adapter has the Option "DO NOT Use SOAP Envelope " checked . So it is still not working in my case .
    I have made all the Configurations in the Receiver SOAP adapter but am unable to get the fault response back .
    Please find below the Screenshot of the Receiver SOAP Adapter.
    Im my case I am able to receive the successfull response in my Response Mappping (I have created a diff ICO for Response Message and a diff ICO for Fault Message). When a fault is received even the Fault message goes to the response mapping and it fails in the response mapping as the fault structure & the response structure do not match .
    Do we need to make some additional configuration  for the handing  faults, whn the option "DO NOT use SOAP envlope is checked" as it removed the Env from the messgaes.
    Am I missing something, would you be able to have a look.
    Thanks
    Regards
    Nilesh Taunk.

  • SOAP Adapter: DO not use soap envelope

    Hi Guys
    I have a scenario, which calls a webservice from my ABAP Proxies, the twist in this is that SOAP request expects license info into the header of SOAP envelope, I could achive this by XSLT mapping in the receiver SOAP adapter I selected the option "Do not use SOAP envelope" and could do the call.
    Due to this the response received from the webservice is treated as payload, as shown below...
    response message payload:
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Header xmlns="http://schemas.xmlsoap.org/soap/envelope/">
        <SubscriptionInfo xmlns="http://ws.strikeiron.com">
          <LicenseStatusCode>0</LicenseStatusCode>
          <LicenseStatus>Valid license key</LicenseStatus>
          <LicenseActionCode>0</LicenseActionCode>
          <LicenseAction>Decremented hit count</LicenseAction>
          <RemainingHits>18</RemainingHits>
          <Amount>0</Amount>
        </SubscriptionInfo>
      </Header>
      <soap:Body>
        <getRateResponse xmlns="CurrencyRates">
          <getRateResult>44.945</getRateResult>
        </getRateResponse>
      </soap:Body>
    </soap:Envelope>
    and when i am trying to do the response mapping, it is not able to read the value.
    Anyone having any idea, on how we could do this.
    Thanks
    Dheeraj

    Hi
    I am sorry for replying in so late, was busy with some projects.
    I got few mails and this post is cathing up again, so thought of giving the solution I followed without any adapter module or anything, simple plain XSLT mapping.
    <u><b>Integration Repository</b></u>
    1. Created data type and message type for Outbound Interface
    2. Imported the WSDL
    3. Created an XSD out of the sample response I got by calling the WSDL (this you can do from any tool available, i used the strikeiron website), pls refer below to see the XSD below, and you will have to use the message type envelope from it.
    4. Most Important step, created 2 XSLT mappings, one for request and the other for response., Pls refer below for both these mappings.
    5. did the interface mapping
    <u><b>Integration Directory</b></u>
    1. pls configure your scenario as normaly you do, and while you configure the communication channel for your soap receiver, make sure you click on the do not use soap envelop option.
    thats it done.
    <u><b>XSLT Request Mapping</b></u>
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
         <xsl:template match="/">
              <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
                   <SOAP-ENV:Header>
                        <LicenseInfo xmlns="http://ws.strikeiron.com">
                             <RegisteredUser>
                                  <UserID>xyz</UserID>
                                  <Password>xyz</Password>
                             </RegisteredUser>
                        </LicenseInfo>
                   </SOAP-ENV:Header>
                   <SOAP-ENV:Body>
                        <getConversion xmlns="CurrencyRates">
                             <FromCurrencyCode>
                                  <xsl:value-of select="//fromCurrency"/>
                             </FromCurrencyCode>
                             <ToCurrencyCode>
                                  <xsl:value-of select="//ToCurrency"/>
                             </ToCurrencyCode>
                             <Amount>1</Amount>
                        </getConversion>
                   </SOAP-ENV:Body>
              </SOAP-ENV:Envelope>
         </xsl:template>
    </xsl:stylesheet>
    <u><b>XSLT Response Mapping</b></u>
    <?xml version='1.0' ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="CurrencyRates" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
         <xsl:template match="/">
              <ns0:MT_Cur_res xmlns:ns0="http://www.april.in/WebService/SOAPHeader">
                   <Rate>
                        <xsl:value-of select="soap:Envelope/soap:Body/a:getConversionResponse/a:getConversionResult"/>
                   </Rate>
              </ns0:MT_Cur_res>
         </xsl:template>
    </xsl:stylesheet>
    <u><b>Webservice Response XSD</b></u>
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ws.strikeiron.com" xmlns:ns2="CurrencyRates">
      <xs:import namespace="CurrencyRates" schemaLocation="ns2.xsd"/>
      <xs:import namespace="http://ws.strikeiron.com" schemaLocation="ns1.xsd"/>
      <xs:element name="Envelope">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="soap:Header"/>
            <xs:element ref="soap:Body"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Header">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ns1:SubscriptionInfo"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Body">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ns2:getConversionResponse"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    let me know in case somebody gets stuck somewhere for this scenario.
    Take Care
    Dheeraj

  • How to capture SOAP fault when using "Do not use SOAP envelope" parameter

    Hi,
    we have a synchronous  RFC -> XI -> Web Service scenario. The Web Service requires some custom SOAP header elements for user authorization which forced us create the entire SOAP message in a message mapping and to set the "Do not use SOAP envelope" parameter in the receiving SOAP adapter.
    In order to capture the SOAP fault message from the Web Service we have created a message interface with a fault message and also created an interface mapping with a fault message mapping.
    Our problem is that the fault message is not populated when we get a SOAP fault message back from the Web Service. Is this due to the fact that we have set the  "Do not use SOAP envelope" parameter?
    Thanks in advance!
    Stefan
    Message was edited by:
            Stefan Nilsson

    Hi Bhavesh,
    I have exaactly same scenario. But the only difference is that the Successful payload is also not coming into PI.
    The request is successfully hittng the webservice.
    Please guide me on how to capture the paylod.
    I am using the WSDL provided by the thirdparty but sill the message is not coming into PI.

  • Parse a soap envelope

    I have a SOAP response envelope that I am trying to parse using extractvalue.
    The response is stored in a xmltype field in a table.
    Table
    create table ws_results
    (x xmltype);SOAP Response
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
         <s:Header>
              <ActivityId CorrelationId="12855f8e-d2be-40c7-81d8-fafa3cf9a779" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">d24174d3-e095-460a-b9f8-2bae66efe813</ActivityId>
         </s:Header>
         <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
              <FetchResponse xmlns="urn: WA.Ecy.ADS.FacilitySite.Services">
                   <FacilitySiteId>99997167</FacilitySiteId>
              </FetchResponse>
         </s:Body>
    </s:Envelope>Here is the SQL that I attempting to use to get the Facility Site ID out
    select extractvalue(x,'/FetchResponse/FacilitySiteId') from ws_results;
    select extractvalue(x,'/FetchResponse/FacilitySiteId','xmlns="http://microsoft.com/wsdl/types/"')
    from ws_resultsThese returns a null.
    Seems like this should be pretty straightforward and I am sure that I am missing something small. Any help would be appreciated.
    Thanks, Tony

    The problem seems to be (at least with me testing) is the xmlns="urn: WA.Ecy.ADS.FacilitySite.Services". Oracle considers it invalid xpath. If it is replaced with "http://www.ms.com/xml", then it seems OK with xpath. You can test this:
    declare
         ---v_xmlText          clob ;      ---varchar2(32765);
         v_xmlText          sys.xmltype;
         v_FacID               varchar2(50) := null;
         v_FacilitySiteId     varchar2(50) := null;
         v_FacilitySiteName     varchar2(50) := null;
    begin
         v_xmlText := sys.xmlType('
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
         <s:Header>
              <ActivityId CorrelationId="48538673-36c0-4f6d-8c05-94b753d0e3ab"
              xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">
              b4af9688-a929-4b9f-a187-fb68f3927240
              </ActivityId>
         </s:Header>
         <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema">
              <FacilitySiteResponse xmlns="http://www.ms.com/xml">
                   <FacilitySiteEntity>
                        <Id>99997167</Id>
                        <FacilitySiteId>99997167</FacilitySiteId>
                        <FacilitySiteName>My New Test Facility</FacilitySiteName>
                        <FacilitySiteKeySearchName>My New Te</FacilitySiteKeySearchName>
                        <VirtualSiteFlag>78</VirtualSiteFlag>
                        <GeographicLocationId>99997167</GeographicLocationId>
                        <CreatedDate>2008-11-07T07:32:21.07</CreatedDate>
                        <ModifiedByName>taus461</ModifiedByName>
                        <ModifiedDate>2008-11-07T07:44:20.723</ModifiedDate>
                        <CreatedByName>taus461</CreatedByName>
                   </FacilitySiteEntity>
                   <GeographicLocationEntity>
                        <Id>99997167</Id>
                        <GeographicLocationId>99997167</GeographicLocationId>
                        <AddressLine1>2020 22nd Ave SE</AddressLine1>
                        <CityName>Olympia</CityName>
                        <CongressionalDistrictNumber xsi:nil="true"/>
                        <COORD_XTNT_CD xsi:nil="true"/>
                        <HorizontalDatumCode>3</HorizontalDatumCode>
                        <HorizontalAccuracyLevelCode>13</HorizontalAccuracyLevelCode>
                        <HorizontalCollectionMethodCode>2</HorizontalCollectionMethodCode>
                        <GeographicPositionCode>8</GeographicPositionCode>
                        <LatitudeDecimalNumber xsi:nil="true"/>
                        <LatitudeDegreeNumber xsi:nil="true"/>
                        <LocationVerifiedFlag xsi:nil="true"/>
                        <LatitudeMinutesNumber xsi:nil="true"/>
                        <LatitudeSecondsNumber xsi:nil="true"/>
                        <LongitudeDecimalNumber xsi:nil="true"/>
                        <LongitudeDegreeNumber xsi:nil="true"/>
                        <LongitudeMinutesNumber xsi:nil="true"/>
                        <LongitudeSecondsNumber xsi:nil="true"/>
                        <BaseReferenceCode>SPCS</BaseReferenceCode>
                        <SOURCE_SCALE_CD>99</SOURCE_SCALE_CD>
                        <VerticalMeasureNumber xsi:nil="true"/>
                        <VerticalMeasureUnitCode>FT</VerticalMeasureUnitCode>
                        <VerticalReferenceCode xsi:nil="true"/>
                        <VerticalCollectionMethodCode xsi:nil="true"/>
                        <VerticalDatumCode xsi:nil="true"/>
                        <VerticalAccuracyLevelCode xsi:nil="true"/>
                        <CountyCodeNumber xsi:nil="true"/>
                        <LocationDescription1>This is my test facility decription</LocationDescription1>
                        <EPARegionName xsi:nil="true"/>
                        <GISVerifiedFlag xsi:nil="true"/>
                        <LegislativeDistrictNumber xsi:nil="true"/>
                        <IndianLandFlag>78</IndianLandFlag>
                        <RangeDirectionCode xsi:nil="true"/>
                        <RangeNumber xsi:nil="true"/>
                        <RegionCode/>
                        <SectionNumber xsi:nil="true"/>
                        <StateCode>WA</StateCode>
                        <SPCSXCoordinateNumber xsi:nil="true"/>
                        <SPCSYCoordinateNumber xsi:nil="true"/>
                        <SPCSZoneCode xsi:nil="true"/>
                        <TownshipDirectionCode xsi:nil="true"/>
                        <TownshipNumber xsi:nil="true"/>
                        <UTMXCoordinateNumber xsi:nil="true"/>
                        <UTMYCoordinateNumber xsi:nil="true"/>
                        <UTMZoneCode xsi:nil="true"/>
                        <WRIAIdNumber xsi:nil="true"/>
                        <ZipCode>98501</ZipCode>
                        <PLAIndicatorCode xsi:nil="true"/>
                        <GISReferenceNumber xsi:nil="true"/>
                        <GISCalculatedLatDecimalNumber xsi:nil="true"/>
                        <GISCalculatedLongDecimalNumber xsi:nil="true"/>
                        <ModifiedByName>taus461</ModifiedByName>
                        <ModifiedDate>2008-11-07T07:44:20.74</ModifiedDate>
                        <CreatedDate xsi:nil="true"/>
                        <CreatedByName>taus461</CreatedByName>
                        <FacilitySite>
                             <Id>99997167</Id>
                             <FacilitySiteId>99997167</FacilitySiteId>
                             <FacilitySiteName>My New Test Facility</FacilitySiteName>
                             <FacilitySiteKeySearchName>My New Te</FacilitySiteKeySearchName>
                             <VirtualSiteFlag>78</VirtualSiteFlag>
                             <GeographicLocationId>99997167</GeographicLocationId>
                             <CreatedDate>2008-11-07T07:32:21.07</CreatedDate>
                             <ModifiedByName>taus461</ModifiedByName>
                             <ModifiedDate>2008-11-07T07:44:20.723</ModifiedDate>
                             <CreatedByName>taus461</CreatedByName>
                        </FacilitySite>
                   </GeographicLocationEntity>
                   <IsOperationSuccess>true</IsOperationSuccess>
              </FacilitySiteResponse>
         </s:Body>
    </s:Envelope>');
         select fac.facID, fac.FacilitySiteId, fac.FacilitySiteName
              into v_FacID, v_FacilitySiteId, v_FacilitySiteName
         from
         xmltable
              xmlnamespaces
                   default 'http://www.ms.com/xml'     
                   ---'http://www.ms.com/xml'
                   ---'http://schemas.xmlsoap.org/ws/2004/08/addressing' as "wsa",
                   ---'http://www.w3.org/2003/05/soap-envelope' as "soap"
              '//FacilitySiteResponse'
              passing v_xmlText
              columns
              FacID               varchar2(50)     path     '//FacilitySiteEntity/Id',
              FacilitySiteId          varchar2(50)     path     '//FacilitySiteEntity/FacilitySiteId',
              FacilitySiteName     varchar2(50)     path     '//FacilitySiteEntity/FacilitySiteName'
         ) fac;
         dbms_output.put_line('FacID = ' || v_FacID);
         dbms_output.put_line('FacSiteID = ' || v_FacilitySiteId);
         dbms_output.put_line('FacSiteName = ' || v_FacilitySiteName);
                    select extractValue(v_xmlText, '//FacilitySiteResponse/FacilitySiteEntity/Id', 'xmlns="http://www.ms.com/xml"')
         into v_FacID from dual;
                   dbms_output.put_line('FacID = ' || v_FacID);
    end;
    /FacID = 99997167
    FacSiteID = 99997167
    FacSiteName = My New Test Facility
    FacID = 99997167
    PL/SQL procedure successfully completed.

  • Reading Header data in a SOAP Envelope for SOAP Sender Adapter

    Hello All,
    Am using a SOAP sender adapter and want to use the data inside the SOAP Header for some routing purpose(extended receiver determination). Any SOAP message coming into XI will look something like below. But XI will pass the contents of <SOAP-ENV:Body> to Payload and <SOAP-ENV:Header> to the SOAP Header category you can see that in SXMB_MONI.
    Is there a way to read the data in my SOAP Header to be later used in my extended receiver determination.
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:Q-ENV="/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <SOAP-ENV:Header>
              <Q-ENV:Header>
                   <Q-ENV:Sender-Id>1</Q-ENV:Sender-Id>
                   <Q-ENV:Receiver-Id></Q-ENV:Receiver-Id>
                   <Q-ENV:Correlation-Id></Q-ENV:Correlation-Id>
                   <Q-ENV:Message-Id></Q-ENV:Message-Id>
                   <Q-ENV:Date-Sent></Q-ENV:Date-Sent>
                   <Q-ENV:Document-Type></Q-ENV:Document-Type>
                   <Q-ENV:Message-Format></Q-ENV:Message-Format>
              </Q-ENV:Header>
         </SOAP-ENV:Header>
         <SOAP-ENV:Body>
              <Q-ENV:Body>
                   <Q-ENV:Content-Type>text/xml</Q-ENV:Content-Type>
                   <Q-ENV:Message-Type></Q-ENV:Message-Type>
                   <Q-ENV:Encoding>UTF-8</Q-ENV:Encoding>
                   <Q-ENV:Message-Body>
         </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Thanks for your replies in advance.
    Regards,
    Prashanth

    Hello,
    but they were not getting any response back from XI and the sending system kept resending the message.. may be it was acting like a HTTP post.
    The method that is used by the native SOAP Adapter is always HTTP Post. Not sure why you are not getting a response, have you checked the outbound firewall of the sending party or the inbound firewall of XI? To which SOAP URL are you sending to?
    Hope this helps,
    Mark

  • SOAP envelope missing some info

    Hello
    I have been struggling with a web service request for some time and i need some assistance.
    I have to insert subscriber info into someone elses db.They created a web service for me.
    My code looks like this:
    <cfinvoke  webservice="http://41.208.61.35/legacyfallback/ws/legacyLifeWS.php?wsdl" method="register1" returnVariable="somereturn">
        <cfinvokeargument name="name" value="steve" />
        <cfinvokeargument name="mobilenumber" value="123456" />
    </cfinvoke>
    The person who created the web service uses php.
    He checked my return and he saw this:
    <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><register1 soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><mobileNumber xsi:type="xsd:string">123456</mobileNumber></register1></soapenv:Body></soapenv:Envelope>
    He tried the same from his side using php to do the call and he got this return:
    <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www.callagain.co.za/soap/legacyLifeWS" xmlns:types="http://www.callagain.co.za/soap/legacyLifeWS/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><register1><mobileNumber xsi:type="xsd:string">0824566072</mobileNumber><name xsi:type="xsd:string">Pieter</name></register1></soap:Body></soap:Envelope>
    I am missing this in my envelope:
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www.callagain.co.za/soap/legacyLifeWS" xmlns:types="http://www.callagain.co.za/soap/legacyLifeWS/encodedTypes"
    Please can you explain how i can get the same info my soap envlope?
    Thank you

    <!--- WSDL --->
    <cfset wsdl_url="http://41.208.61.35/legacyfallback/ws/legacyLifeWS.php?wsdl">
    <cftry>
        <!--- SOAP message to send to Web Service--->
        <cfsavecontent variable="msg"><?xml version="1.0" encoding="UTF-8" ?>
            <cfoutput><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
             <soapenv:Body>
             <ns1:query soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://41.208.61.35/soap/legacyLifeWS">
             <wsUserName xsi:type="xsd:string">Steve</wsUserName>
              <wsUserPass xsi:type="xsd:string">a1b2c3</wsUserPass>
              <mobilenumber xsi:type="xsd:string">12345678</mobilenumber>
              </ns1:query>
              </soapenv:Body>
              </soapenv:Envelope></cfoutput>
        </cfsavecontent>
        <!--- All the 4 possible values of SOAPAction, obtained from the WSDL --->
        <!---
        http://41.208.61.35/legacyfallback/ws/legacyLifeWS.php/register
        http://41.208.61.35/legacyfallback/ws/legacyLifeWS.php/transaction
        http://41.208.61.35/legacyfallback/ws/legacyLifeWS.php/query
        http://41.208.61.35/legacyfallback/ws/legacyLifeWS.php/history
         --->
        <!--- Invoke web service to send message--->
        <cfhttp url="#wsdl_url#" method="post" <!--- proxyport="3128" proxyserver="193.78.83.131"--->>
            <cfhttpparam type="header" name="content-type" value="text/xml">
            <cfhttpparam type="header" name="SOAPAction" value="http://41.208.61.35/legacyfallback/ws/legacyLifeWS.php/query">
            <cfhttpparam type="header" name="content-length" value="#len(msg)#">
            <cfhttpparam type="header" name="charset" value="utf-8">
            <cfhttpparam type="xml" name="registerRequest" value="#trim(msg)#">
        </cfhttp>
        <!--- Web service SOAP response --->
        <p><cfoutput>#xmlFormat(cfhttp.fileContent)#</cfoutput> </p>
    <cfcatch type="any">
        <cfdump var="#cfcatch#">
    </cfcatch>
    </cftry>

  • Adding CDATA into SOAP Message

    I am a student in Hollland en need some help.
    I want te add CDATA into a SOAP Message whit JAVA.
    Like:
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
         <SOAP-ENV:Body>
              <m:getPremieInfo xmlns:m="http://tempuri.org/message/">
                   <docIn><![CDATA[<?xml version="1.0"?>
    <MIC_CONTRACT><MIC_VIEW><![CDATA[&lt;?xml version="1.0"?&gt;
    &lt;Contractdocument&gt;&lt;UN&gt;&lt;UN_ZENDER&gt;I094329000012258&lt;/UN_ZENDER&gt;&lt;UN_ONTVAN&gt;I094330000070695&lt;/UN_ONTVAN&gt;&lt;UN_DATPRE&gt;020314&lt;/UN_DATPRE&gt;&lt;UN_TIMPRE&gt;0917&lt;/UN_TIMPRE&gt;&lt;UN_INTREF/&gt;&lt;UN_MSGREF&gt;03140917094680&lt;/UN_MSGREF&gt;&lt;UN_LOGNAM&gt;INSLBW001000IN&lt;/UN_LOGNAM&gt;&lt;/UN&gt;&lt;AL&gt;&lt;AL_VRWRKCD&gt;0&lt;/AL_VRWRKCD&gt;&lt;AL_VIEWCOD&gt;04027&lt;/AL_VIEWCOD&gt;&lt;AL_VERSIEV&gt;007&lt;/AL_VERSIEV&gt;&lt;AL_FUNCTIE&gt;08&lt;/AL_FUNCTIE&gt;&lt;RI_RIJVAAR&gt;N&lt;/RI_RIJVAAR&gt;&lt;RI_BMVERKL&gt;A&lt;/RI_BMVERKL&gt;&lt;RI_SCHDVRY&gt;30&lt;/RI_SCHDVRY&gt;&lt;/RI&gt;&lt;/PP&gt;&lt;/Contractdocument&gt;
    ]]></MIC_VIEW></MIC_CONTRACT>
    ]]></docIn>          
              </m:getPremieInfo>
         </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Can anyone tell me how to do that in JAVA ? Please help me !
    Birol
    [email protected]

    I found this Sample from the Axis's sample ---axis\samples\message.
    package samples.message;
    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import org.apache.axis.message.SOAPBodyElement;
    import org.apache.axis.utils.Options;
    import org.apache.axis.utils.XMLUtils;
    import org.w3c.dom.CDATASection;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import java.net.URL;
    import java.util.Vector;
    * Simple test driver for our message service.
    public class TestMsg {
    public String doit(String[] args) throws Exception {
    Options opts = new Options(args);
    opts.setDefaultURL("http://localhost:8080/axis/services/MessageService");
    Service service = new Service();
    Call call = (Call) service.createCall();
    call.setTargetEndpointAddress( new URL(opts.getURL()) );
    SOAPBodyElement[] input = new SOAPBodyElement[3];
    input[0] = new SOAPBodyElement(XMLUtils.StringToElement("urn:foo",
    "e1", "Hello"));
    input[1] = new SOAPBodyElement(XMLUtils.StringToElement("urn:foo",
    "e1", "World"));
    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document doc = builder.newDocument();
    Element cdataElem = doc.createElementNS("urn:foo", "e3");
    CDATASection cdata = doc.createCDATASection("Text with\n\tImportant <b> whitespace </b> and tags! ");
    cdataElem.appendChild(cdata);
    input[2] = new SOAPBodyElement(cdataElem);
    Vector elems = (Vector) call.invoke( input );
    SOAPBodyElement elem = null ;
    Element e = null ;
    elem = (SOAPBodyElement) elems.get(0);
    e = elem.getAsDOM();
    String str = "Res elem[0]=" + XMLUtils.ElementToString(e);
    elem = (SOAPBodyElement) elems.get(1);
    e = elem.getAsDOM();
    str = str + "Res elem[1]=" + XMLUtils.ElementToString(e);
    elem = (SOAPBodyElement) elems.get(2);
    e = elem.getAsDOM();
    str = str + "Res elem[2]=" + XMLUtils.ElementToString(e);
    return( str );
    public static void main(String[] args) throws Exception {
    String res = (new TestMsg()).doit(args);
    System.out.println(res);

  • SOAP envelope XML body extraction

    hello , I'm new in the 'XML-world' and also new on this forum but i have a question.
    My function :
    create or replace
    FUNCTION DHL_SOAP_RESPONSE_XMLTYPE RETURN XMLType AS
    SOAP_RESPONSE constant varchar2(32767) :=
    '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
    <rateresp:RateResponse xmlns:rateresp="http://scxgxtt.phx-dc.dhl.com/euExpressRateBook/RateMsgResponse">
    <Provider code="DHL">
    <Notification code="0">
    <Message/>
    </Notification>
    <Service type="C">
    <TotalNet>
    <Currency>EUR</Currency>
    <Amount>17.28</Amount>
    </TotalNet>
    <Charges>
    <Currency>EUR</Currency>
    <Charge>
    <ChargeType>MEDICAL EXPRESS</ChargeType>
    <ChargeAmount>14.77</ChargeAmount>
    </Charge>
    <Charge>
    <ChargeType>FUEL SURCHARGE</ChargeType>
    <ChargeAmount>2.51</ChargeAmount>
    </Charge>
    </Charges>
    <DeliveryTime>2013-02-06T12:00:00</DeliveryTime>
    <CutoffTime>2013-02-05T20:30:00</CutoffTime>
    <NextBusinessDayInd>N</NextBusinessDayInd>
    </Service>
    <Service type="T">
    <TotalNet>
    <Currency>EUR</Currency>
    <Amount>17.28</Amount>
    </TotalNet>
    <Charges>
    <Currency>EUR</Currency>
    <Charge>
    <ChargeType>EXPRESS 12:00</ChargeType>
    <ChargeAmount>14.77</ChargeAmount>
    </Charge>
    <Charge>
    <ChargeType>FUEL SURCHARGE</ChargeType>
    <ChargeAmount>2.51</ChargeAmount>
    </Charge>
    </Charges>
    <DeliveryTime>2013-02-06T12:00:00</DeliveryTime>
    <CutoffTime>2013-02-05T20:30:00</CutoffTime>
    <NextBusinessDayInd>N</NextBusinessDayInd>
    </Service>
    <Service type="G">
    <TotalNet>
    <Currency/>
    <Amount>0.00</Amount>
    </TotalNet>
    <DeliveryTime>2013-02-06T23:59:00</DeliveryTime>
    <CutoffTime>2013-02-05T20:30:00</CutoffTime>
    <NextBusinessDayInd>N</NextBusinessDayInd>
    </Service>
    <Service type="N">
    <TotalNet>
    <Currency>EUR</Currency>
    <Amount>13.69</Amount>
    </TotalNet>
    <Charges>
    <Currency>EUR</Currency>
    <Charge>
    <ChargeType>DOMESTIC EXPRESS</ChargeType>
    <ChargeAmount>11.70</ChargeAmount>
    </Charge>
    <Charge>
    <ChargeType>FUEL SURCHARGE</ChargeType>
    <ChargeAmount>1.99</ChargeAmount>
    </Charge>
    </Charges>
    <DeliveryTime>2013-02-06T23:59:00</DeliveryTime>
    <CutoffTime>2013-02-05T20:30:00</CutoffTime>
    <NextBusinessDayInd>N</NextBusinessDayInd>
    </Service>
    <Service type="9">
    <TotalNet>
    <Currency/>
    <Amount>0.00</Amount>
    </TotalNet>
    <DeliveryTime>2013-02-07T23:59:00</DeliveryTime>
    <CutoffTime>2013-02-05T16:30:00</CutoffTime>
    <NextBusinessDayInd>N</NextBusinessDayInd>
    </Service>
    </Provider>
    </rateresp:RateResponse>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    BEGIN
    RETURN XMLType(SOAP_RESPONSE);
    END;
    Now what I want is extract the body of the respons with a select .
    Can someone help me because I don't understand this ?
    I work with the Oracle Database XE 11g.
    SQL developer.
    Thanks already

    Welcome to the forums.
    As a tip for future posts [url https://forums.oracle.com/forums/thread.jspa?threadID=2174552#9360002]2. How do I ask a question on the forums?
    That said, a basic example that pulls the contents of the body out is
    declare
      l_ws_rsp    XMLTYPE;
      l_body_rsp  XMLTYPE;
    begin
      -- Retrieving the SOAP message
      l_ws_rsp := DHL_SOAP_RESPONSE_XMLTYPE;
      -- Extracting out the body
      SELECT xt.body_xml
        INTO l_body_rsp
        FROM XMLTable(XMLNamespaces('http://schemas.xmlsoap.org/soap/envelope/' AS "SOAP-ENV"),
                      '/SOAP-ENV:Envelope/SOAP-ENV:Body/*'
                      PASSING l_ws_rsp
                      COLUMNS
                      body_xml   XMLTYPE PATH '.') xt;
       dbms_output.put_line(l_body_rsp.getClobVal());
    end;If you Google
    XMLTable soap site:forums.oracle.com
    you can find plenty of examples on these forums regarding how to parse a web service response.
    The bigger question is, what are you going to do with the data in the response. As the example above alludes too, you can actually parse the entire WS response with one SQL statement and return the results as one or more rows. Will you be performing PL/SQL logic on the returned results or will you simply be INSERTing them into the database for something else to use?

  • APEX 3.0 Web Service OWS-04052 unrecognized operation SOAP Envelop

    Hey,
    I run into a problem with WebServices. Short, I implemented a WebService with JDeveloper and now I would like to create ws references in APEX. The ws is working 100% correct so the problem is, that APEX creates a soap envelop which is not 100% correct...
    So blabla here it is what APEX generates for request:
    <?xml version='1.0' encoding='UTF-8'?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <SOAP-ENV:Body>
    <ns1:projectId
    xmlns:ns1="http://impl.planning.services.model.azima.promatis.com/">2</ns1:projectId>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Now the request which should be sended: (from EM Console)
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body xmlns:ns1="http://impl.planning.services.model.azima.promatis.com/">
    <ns1:getAllElementsOfProject>
    <ns1:projectId>2</ns1:projectId>
    </ns1:getAllElementsOfProject>
    </soap:Body>
    </soap:Envelope>
    Compare and you will see that the operation info is missing. So it's almost the same but the operation 'getAllElementsOfProject' isn't in the request.
    If it helps I could also send the wsdl if requiered for help.
    So I run into the following error:
    <?xml version="1.0" encoding="UTF-8"?>
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://impl.planning.services.model.azima.promatis.com/"><env:Body><env:Fault><faultcode>env:Client</faultcode><faultstring>Caught exception while handling request: unrecognized operation: {http://impl.planning.services.model.azima.promatis.com/}projectId</faultstring></env:Fault></env:Body></env:Envelope>
    From Response
    2007-05-22 16:41:01.765 WARNING OWS-04052 Bestimmen der Vorgangs-ID aus SOAP-Nachricht nicht m÷glich.
    In OC4J (sorry german - means that operation-id couldn't be identified)
    Do you have any ideas how I could configure this? Before you try to say: make it manually, I won't, because it have to worked automatically!
    Thanks
    Frank

    Ok I tried it with new Version JAX-WS 2.0.1. There is a new annotation where the type of the Enpoint or WebService itseld can be set:
    @BindingType( value=SOAPBinding.SOAP11HTTP_BINDING )
    So I tried now with SOAP 1.1 but APEX still don't put the operation name in the SOAP request envelope...
    Now do anyone out there have a clue what else could be wrong? Did I maybe forget an annotation parameter somewhere or something else? So I do it something like this:
    @Stateless
    @WebService( name="XXX" )
    @BindingType( value=SOAPBinding.SOAP11HTTP_BINDING )
    public class XXXImpl implements Ixxx {
    @EJB Ia a;
    @EJB Ib b;
    @WebMethod( operationName="foo" )
    public ADaoObjectWithNoComplexAttributes foo( Long someId ) {
    // do it!
    return theDao;
    I am appreciate for any help!
    Thanks
    Message was edited by:
    promatis

  • Parsing SOAP Envelope

    I am new to mobile web services. I need to create a parser but my code didnot work:( Could you please help me?
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    import java.io.*;
    import javax.microedition.midlet.*;
    import org.ksoap2.SoapEnvelope;
    import org.kxml2.io.KXmlParser;
    import org.xmlpull.v1.XmlPullParserException;
    import java.io.ByteArrayInputStream;
    * @author Welcome
    public class MobileSOAPParsingMidlet extends MIDlet {
    String msg1="<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"> <S:Header/>" +
    " <S:Body> <ns2:Add xmlns:ns2=\"http://webservice/\"> <x>5</x>" +
    " <y>8</y> </ns2:Add> </S:Body></S:Envelope>";
    String msg2 = " <Envelope Version= \"1\"> <Body> <WebService> <Action>Add</Action> <x>5</x> <y>8</y> </WebService> </Body></Envelope>";
    String msg = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
    "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
    " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
    " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" +
    " <getRating xmlns=\"http://tempuri.org\">\n" +
    " </getRating>\n" +
    " </soap:Body>\n" +
    "</soap:Envelope>";
    public void startApp() {
    byte[] xmlByteArray = msg.getBytes();
    ByteArrayInputStream xmlStream = new ByteArrayInputStream( xmlByteArray );
    InputStreamReader xmlReader = new InputStreamReader( xmlStream );
    KXmlParser parser = new KXmlParser();
    try {
    parser.setInput(xmlStream, msg);
    } catch (XmlPullParserException ex) {
    ex.printStackTrace();
    SoapEnvelope soapenvelope=new SoapEnvelope(SoapEnvelope.VER12);
    try {
    soapenvelope.parse(parser);
    } catch (IOException ex) {
    ex.printStackTrace();
    } catch (XmlPullParserException ex) {
    ex.printStackTrace();
    // catch(UnsupportedEncodingException e){
    // System.err.println(e);
    public void pauseApp() {
    public void destroyApp(boolean unconditional) {
    }

    I accidently hit the post before the messag was composed.
    I'm trying to parse an XML soap envelope found in a collection. I can do it in TOAD but get a "ORA-01008: not all variables bound" message in APEX within a PL/SQL anonymous block
    Here is the code snippet:
    declare
    l_xml clob;
    l_pdf                    clob;
    begin
    select xmltype.createxml(cm.clob001)
    into l_xmlval
    from ....
    select l_xmlval.extract('//*[local-name()=''reportBytes]').getclobval()
    into l_pdf
    from dual;
    end;
    It is the presense of the two backslashes that cause the ORA-01008. Does anybody know how to resolve this problem?
    Alex

Maybe you are looking for