Content of the soap body

I've this wsdl taken from the wsdl specification documentation.
<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"
xmlns:tns="http://example.com/stockquote.wsdl"
xmlns:xsd1="http://example.com/stockquote.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<schema targetNamespace="http://example.com/stockquote.xsd"
xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="TradePriceRequest">
<complexType>
<all>
<element name="tickerSymbol" type="string"/>
</all>
</complexType>
</element>
<element name="TradePrice">
<complexType>
<all>
<element name="price" type="float"/>
</all>
</complexType>
</element>
</schema>
</types>
<message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message>
<message name="GetLastTradePriceOutput">
<part name="body" element="xsd1:TradePrice"/>
</message>
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType>
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLastTradePrice">
<soap:operation soapAction="http://example.com/GetLastTradePrice"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="StockQuoteService">
<documentation>My first service</documentation>
<port name="StockQuotePort" binding="tns:StockQuoteBinding">
<soap:address location="http://example.com/stockquote"/>
</port>
</service>
</definitions>
I developed the service implementation and a service client using wsimport, jaxb, jaxws.
Trying running the client I get the exception:
Cannot find dispatch method for {http://example.com/stockquote.xsd}TradePriceRequest
Running the message request generated by soapUI has the same effect.
The soap message request generated by soapUI, given the above WSDL, is:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stoc="http://example.com/stockquote.xsd">
<soapenv:Header/>
<soapenv:Body>
<stoc:TradePriceRequest/>
</soapenv:Body>
</soapenv:Envelope>
but in the wsdl spec it should be:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<m:tickerSymbol>DIS</m:tickerSymbol>
</m:GetLastTradePrice>
</soapenv:Body>
</soapenv:Envelope>
In other word, the content of the soap body should be the wsdl operation or the complex type representing the input part?

I am a newbie, so I don't know if my reply will be helpful.
Reading the fault "Cannot find dispatch method for {http://example.com/stockquote.xsd}TradePriceRequest", I think the problem is that TradePriceRequest is a type for a message and it is treated as an operation. The content of the SOAP message should be the operation (GetLastTradePrice) and nested inside the operation should be the parameters for the operation (the complex type...). So the answer is probably "both", one inside the other.
I think that the message as you wrote it:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<m:tickerSymbol>DIS</m:tickerSymbol>
</m:GetLastTradePrice>
</soapenv:Body>
</soapenv:Envelope>
is correct.

Similar Messages

  • Missing namespace prefix in the soap body

    Hello
    The soap body that is produced along with soap header for my webservice. I
    am the client talking to a server. The first piece in RED color is what
    weblogic generates to send to the client but does NOT work. The one below
    though works fine which is what I manipulated by hand to send to the
    server. I have no idea why weblogic drops the namespace prefix in the
    BODY.
    -Narahari
    The message is as shown below
    POST /FS HTTP/1.1
    Host: asgappsrv10:6211
    Content-Type: text/xml; charset=utf-8
    Connection: close
    SOAPAction: "ListDomains"
    <?xml version="1.0" encoding="utf-8"?>
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <env:Header>
    <n1:Credentials xmlns:n1="urn:criticalpath:fs:api:1.0"
    xsi:type="n1:Credentials">
    <Username xsi:type="xsd:string">admin@default</Username>
    <Password xsi:type="xsd:string">password</Password>
    <SessionId xsi:nil="true"/>
    </n1:Credentials>
    </env:Header>
    <env:Body
    env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <Fulfill xmlns:n2="urn:criticalpath:fs:api:1.0"
    xsi:type="n2:Fulfill">
    <Request xsi:type="xsd:string">ListDomains</Request>
    <RequestAttributes soapenc:arrayType="n2:Attribute[0]"/>
    <Async xsi:type="xsd:boolean">false</Async>
    </Fulfill>
    </env:Body>
    </env:Envelope>
    When you see the data carefully, the env:Body has the Fulfill element. But
    it does have a namespace prefix on it. This causes the call to fail. If I
    change the above segment manally to look like
    POST /FS HTTP/1.1
    Host: asgappsrv10:6211
    Content-Type: text/xml; charset=utf-8
    Connection: close
    SOAPAction: "ListDomains"
    <?xml version="1.0" encoding="utf-8"?>
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <env:Header>
    <n1:Credentials xmlns:n1="urn:criticalpath:fs:api:1.0"
    xsi:type="n1:Credentials">
    <Username xsi:type="xsd:string">admin@default</Username>
    <Password xsi:type="xsd:string">password</Password>
    <SessionId xsi:nil="true"/>
    </n1:Credentials>
    </env:Header>
    <env:Body
    env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <n2:Fulfill xmlns:n2="urn:criticalpath:fs:api:1.0"
    xsi:type="n2:Fulfill">
    <Request xsi:type="xsd:string">ListDomains</Request>
    <RequestAttributes soapenc:arrayType="n2:Attribute[0]"/>
    <Async xsi:type="xsd:boolean">false</Async>
    </n2:Fulfill>
    </env:Body>
    </env:Envelope>

    Hi All,
    we are also facing the same issue, Please provide the solution if anyone knows. We are also using the SOA Suite 11g Version.

  • Extract fields from the SOAP body during mapping

    Hi all,
    I have an Abap Proxy to SOAP scenario with a main payload and an attachment. During mapping I need the reference of the attachment to store the reference in the main payload. I don't need the attachment itself.
    SOAP-Body:
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Eingangs-Message
      -->
    - <SAP:Manifest xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="wsuid-manifest-5CABE13F5C59AB7FE10000000A1551F7">
    - <SAP:Payload xlink:href="cid:payload-E742FF47D930DE5CE1000000C107826A @sap.com">
      <SAP:Name>MainDocument</SAP:Name>
      <SAP:Description />
      <SAP:Type>Application</SAP:Type>
      </SAP:Payload>
    - <SAP:Payload xlink:href="cid:payload-EE42FF47D930DE5CE1000000C107826A @sap.com">
      <SAP:Name>hugo.txt</SAP:Name>
      <SAP:Description />
      <SAP:Type>ApplicationAttachment</SAP:Type>
      </SAP:Payload>
      </SAP:Manifest>
    I need the attachment reference as string inside my main payload: cid:payload-EE42FF47D930DE5CE1000000C107826A @sap.com
    I wrote an user defined function to select the MessageId, but the MessageId is only part of the reference to the main payload.
    String constant;
    java.util.Map map;
    map = container.getTransformationParameters();
    constant = (String) map.get(StreamTransformationConstants.MESSAGE_ID);
    return constant;
    Has anybody an idea to get the reference of the attachment from the SOAP body with an user defined function or an adapter module?
    Thanks and kind regards
    Frank

    Hello,
    thank you all for the information. I found a solution for my problem on the sender side. I wrote an own helper class with  the method create_attach_from_txt_withref. This method  build an attachment with an own reference and write the reference back to the payload.
    This reference will not be changed within the execute_asynchronous method of the proxy.
    Method parameters:
    P_DATA        Importing   Type     STRING
    P_TYPE        Importing   Type     STRING
    P_NAME        Importing   Type     STRING
    P_ATTACHMENT  Exporting   Type Ref IF_AI_ATTACHMENT
    P_AREF        Exporting   Type     STRING
    Method coding:
    METHOD create_attach_from_txt_withref.
      DATA: lo_attachment TYPE REF TO cl_ai_attachment,
            l_payload     TYPE REF TO if_xms_payload,
            l_pref        TYPE        sxms_mf_s,
            l_guid        TYPE        guid_32,
            l_aref        TYPE        string.
      CLASS cl_ai_factory DEFINITION LOAD.
    " create the attachment
      p_attachment = cl_ai_factory=>create_attachment_from_text(
                    p_data = p_data             " attachment data
                    p_type = p_type             " attachment type
                    p_name = p_name ).          " attachment name
    " we need an implementing class of the interface if_ai_attachment
      lo_attachment ?= p_attachment.
    " get the new payload
      l_payload = lo_attachment->get_payload( ).
    " get the reference of the payload
      l_pref = l_payload->getreference( ).
    " build an own reference
      CALL FUNCTION 'GUID_CREATE'
        IMPORTING
          ev_guid_32 = l_guid.
      CONCATENATE 'payload-' l_guid '@sap.com' INTO l_aref.
      CONCATENATE 'cid:'     l_aref            INTO l_pref-href.
    " set our own reference
      l_payload->setreference( reference = l_pref ).
    " write back the modified payload
      lo_attachment->set_payload( p_payload = l_payload ).
    " return of the reference
      p_aref = l_aref.
    ENDMETHOD.
    If anybody has an idea how to read the soap body within an adapter module please let me know.
    Regards
    Frank

  • Error_: ACS10002: An error occurred while processing the SOAP body

    Hi all,
    We have problem to connect MSCRM online via SDK since yesterday.   All of our MSCRM Online organizations have this issue.  Anyone has the same issue?  
    Error : ACS10002: An error occurred while processing the SOAP body. ACS50000: There was an error issuing a token. ACS50005: Token encryption is required but no encrypting certificate is configured for the relying party.
    Gary

    This is a server side webcache from the OTN site. Not anything client-related. Its a bug that cannot be fixed at this time as OTN is on an EOL version of software. The good news is that most of OTN is moving to a new CMS on the 19th and these errors will disappear.
    In the meantime, if you add a parameter refresh to the URL you get the error on, most of the time, you can get the page back. Parameter refresh is done by adding ?a=b to the end of the URL. You can keep changing the combo too. (i.e. ?c=d)

  • Query to get the contents of the package body

    What is the query that can be used to get the contents of the package body?

    SELECT LINE FROM ALL_SOURCE WHERE TEXT LIKE '%<search_criteria>%'; ???
    SQL> SELECT LINE FROM ALL_SOURCE WHERE TEXT LIKE '%dbms_output%';
                    LINE
                     166
                     168
                     170
                     173
                     174
                     176
                     178
                     180
                       1
                      23
                      24
                      28
                      44
                      52
                      82
    ...

  • How to send smartform as email (smartform content in the email body)

    Hi,
    When I call my smartform, I want to send the smartform content as email. I am seeing one structure : MAIL_RECIPIENT.
    I have the mail id in my hand : xyz. However, based on this email id, how to populate the structure MAIL_RECIPIENT since it has Object ID, Object type and descrption. But No field for Email ID.
    Can any one help me out, in this.
    Thanks,
    Sandeep

    Hi,
    No not the PDF. The content it self should go as email.
    For that only we need to populate MAIL_RECIPIENT structure.
    But my doubt is how to populate this structure. It has no field for email ID.
    Thanks,
    Sandeep

  • Encryp and sign the SOAP Body in 8.1 SP2

    Hi,
    I have deployed a web service with security enabled for encrypting, signing and requires username token.I have written a client for the service and it works fine with 8.1 SP3.
    when i build the same app with 8.1 SP2 and deploy it gets deployed and everything is fine until the client invokes the service. I can see the request SOAP message going properly with a tunneling tool, but i get this error in the response.
    <env:Fault>
    <faultcode>env:Server</faultcode>
    <faultstring>Exception during processing: weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Unable to secure response ] - with nested exception:[weblogic.xml.stream.XMLStreamException: Object not initialized. - with nested exception:[weblogic.xml.security.encryption.EncryptionException: Object not initialized. - with nested exception:[com.rsa.jsafe.JSAFE_InvalidUseException: Object not initialized.]]] (see Fault Detail for stacktrace
    Any Idea what would be wrong ? Does SP2 support WS Security ?
    regards,
    Arun

    Hi,
    i contacted BEA support and gotto know that this is a known issue.
    There was a bug when Message Level Security was enabled for Web Services in WLS 81sp2. If the request message exceeded a certain size, WebLogic Server was throwing the JSAFE_InvalidUseException when trying to encrypt the response.
    The buffer size was increased to accommodate large request messages and allow their encryption. As a result, WLS 81 sp4 no longer throws the JSAFE_InvalidUseException when trying to encrypt a large request message.
    There is a patch available for sp2, i got the patch CR190527_810sp2.jar and applied it. It works fine now.
    thanks
    Arun

  • How to add exactly 2 NON XML caracters at the end of a SOAP body

    Hello all I am trying to add two (and only two) extra non xml caracters "AA" at the END of a SOAP body using the JAXWS handlers as so:
    HTTP/1.1 200 OK
    Content-Type: text/xml;charset=UTF-8
    Content-Length: 131
    Content-Length: 131
    Server: Jetty(7.x.y-SNAPSHOT)
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body></SOAP-ENV:Body></SOAP-ENV:Envelope>
    AA
    The problem is that if you try to add them to the SOAP body (see code below) you get a XML Unmarshalling exception. If I add "AA" as a soap attachment I get MORE than 2 caracters after the SOAP body (which I don't want)
    Here is the my SOAPHandler code :
    @Override
    public boolean handleMessage(SOAPMessageContext mc) {
    if (Boolean.TRUE.equals(mc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY))) {
    try {
    SOAPMessage message = context.getMessage()
    String stringSoapMessage= getMsgAsString(message);
    stringSoapMessage += "ss";
    message.getSOAPPart().setContent((Source) new StreamSource(new ByteArrayInputStream(msg.getBytes())));
    message.saveChanges();
    context.setMessage(message);
    } catch (Exception e1) {
    return true;
    public String getMsgAsString(SOAPMessage message) throws SOAPException {
    String msg = null;
    try {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    message.writeTo(baos);
    msg = baos.toString();
    } catch (Exception e) {
    e.printStackTrace();
    return msg;
    so my question is this: is there any way to add exactly 2 non xml caracters at the end of the soap body using jaxws handlers ? I have spent several weeks on this so it is not an easy question...
    Thanks,
    Fred.

    Yes I have done it using CFX interceptors. But the runtime dependencies needed were too big for this particular use. I mean having to use these:
    apache/cxf/cxf-bundle/2.6.0/cxf-bundle-2.6.0.jar
    org/apache/neethi/neethi/3.0.2/neethi-3.0.2.jar                    
    wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar
    /org/codehaus/woodstox/wstx-asl/3.2.4/wstx-asl-3.2.4.jar
    org/apache/ws/xmlschema/xmlschema-core/2.0.2/xmlschema-core-2.0.2.jar
    org/mortbay/jetty/jetty-util/6.0.2/jetty-util-6.0.2.jar
    org/eclipse/jetty/jetty-util/7.5.4.v20111024/jetty-util-7.5.4.v20111024.jar
    org/apache/geronimo/specs/geronimo-servlet_2.5_spec/1.1.2/geronimo-servlet_2.5_spec-1.1.2.jar
    org/apache/geronimo/specs/geronimo-javamail_1.4_spec/1.7.1/geronimo-javamail_1.4_spec-1.7.1.jar
    org/apache/geronimo/specs/geronimo-servlet_3.0_spec/1.0/geronimo-servlet_3.0_spec-1.0.jar
    org/eclipse/jetty/jetty-http/7.5.4.v20111024/jetty-http-7.5.4.v20111024.jar
    org/eclipse/jetty/jetty-server/7.5.4.v20111024/jetty-server-7.5.4.v20111024.jar
    org/eclipse/jetty/jetty-io/7.5.4.v20111024/jetty-io-7.5.4.v20111024.jar
    org/eclipse/jetty/jetty-continuation/7.5.4.v20111024/jetty-continuation-7.5.4.v20111024.jar
    to add two caracters at the end of a soap message seems like over kill. If this is the only way to do this then i'll do it this way but it just seems like the implementation of the JAXWS API in JDK 6 seems inches away from being able to do this no ?
    Thanks for the replies,
    Fred

  • Replace complete SOAP body content by new string

    Hi,
    can anyone help me with the following problem - I need to replace body content of the SOAP message by a completly different one. I have this new content as a string which represents a part of XML document. I was thinking to configure replace action in this way (suppose that new content is stored in the variable $formatedMessage):
    Replace [ node contents ] of [ undefined XPath ] in [ body ] with [ $formatedMessage/text() ]
    ... but this does not work :(
    Many Thanks,
    Paul

    1. use fn-bea:inlinexml() that convert string to xml dom.
    2. replace $body/request in body with $myVar
    Note: place some log action (eg: $body/request) to debug, and check $domain/$server/log/$server.log file to check log action.
    Hope it help.
    Jonathan Jiang

  • How to get the content of message in the mail body

    Hi,
    Can anyone suggest me to get the message content as the mail body using messagetTransformation bean????

    Hi
    In the Receiver Mail Adapter use these settings
    Message Protocol:XIPAYLOAD
    and tick on Use mail package.
    Gt back if you have more doubts
    Thanks

  • Trying to send email with contents in the body of the message

    Hi,
    Has anyone been successful in modifying the RW_EMAIL_NOTIFICATION script in such a way that allows the contents of the email "body" to be sent as a parameter from a calling script? Thanks.
    Regards,
    David Carr

    David,
    Here is the solution I use which hopefully will suit your requirements and is a little more elegant than the workarounds for using rwmail.  Oracle has the ability to send SMTP emails once you enable the UTL_SMTP package. 
    Log in to Oracle as the SYS user and run the Oracle supplied script to create the UTL_SMTP package - utlsmtp.sql in the Oracle rdbms/admin directory.
    Now create a procedure that you can call subsequently in your scripts to send emails using the UTL_SMTP package.  I created this script under the SYSJCS schema as I'm only going to call it from there, but you could create it as SYS and then create a public synonym for it.
    I called my procedure send_mail (see below).  The enabling of the UTL_SMTP and the creation of the send_mail procedures are one-offs and don't have to be repeated (unless you want to change something about send_mail).  Just change the name of the mailhost in the procedure to one appropriate for your  company.
    NB: I have had to substitute the "at symbol" with *at* otherwise the forum wouldn't accept the post.
    CREATE OR REPLACE PROCEDURE send_mail (
    pSender    VARCHAR2,
    pRecipient VARCHAR2,
    pSubject   VARCHAR2,
    pMessage   VARCHAR2) IS
    mailhost  CONSTANT VARCHAR2(30) := 'yoursmtpcapable.mailserver.corp';
    crlf      CONSTANT VARCHAR2(2):= CHR(13) || CHR(10);
    mesg      VARCHAR2(1000);
    mail_conn utl_smtp.connection;
    BEGIN
       mail_conn := utl_smtp.open_connection(mailhost, 25);
       mesg := 'Date: ' ||
            TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss') || crlf ||
               'From: <'|| pSender ||'>' || crlf ||
               'Subject: '|| pSubject || crlf ||
               'To: '||pRecipient || crlf || '' || crlf || pMessage;
       utl_smtp.helo(mail_conn, mailhost);
       utl_smtp.mail(mail_conn, pSender);
       utl_smtp.rcpt(mail_conn, pRecipient);
       utl_smtp.data(mail_conn, mesg);
       utl_smtp.quit(mail_conn);
    END send_mail;
    Now you can call the send_mail procedure with, e.g.
    send_mail(pSender=>'redwood**at**mycompany.com',pRecipient=>'basisteam**at**mycompany.com',pSubject=>'Alert: Redwood job failure',pMessage=>'There has been a job failure that should be addressed a.s.a.p.');
    Here is a practical application of this email facility.  I created a trigger for ON_JOB_STATUS_CHANGE called _ERROR and here is the code that is executed.  We store contact details for business users that need to be notified of a job failure in the Comment field of the script definition, so for a failed job we grab that info and email it to a power user dlist which includes 24/7 Ops that will call-out the contacts specified.
    Any Comment field that starts with the text CRITICAL_JOB results in an email to the Ops that will perform the call-out, otherwise the email goes to a less critical dlist.
    procedure SYSJCS.ON_JOB_STATUS_CHANGE_ERROR (
      p_job_id     in integer
    , p_old_status in varchar2
    , p_new_status in varchar2
    is   
        v_script       varchar2(30);                                   
        v_step_id      varchar2(9);
        v_description  VARCHAR2(80);
        v_comment_text VARCHAR2(4000);
    begin
        if p_new_status in ('E', 'O') -- Error or Console
        then
            select script_name, decode(step_id, null,'JOB/CHAIN','STEP')
            into v_script, v_step_id
            from jcs_jobs
            where job_id = p_job_id;                              
            select description, comment_text
            into v_description, v_comment_text     
            from jcs_scripts
            where name = v_script;                              
            if ( SUBSTR(v_comment_text,1,12) = 'CRITICAL_JOB' )
            then    
               send_mail(pSender=>'redwood**at**mycompany.com',
                         pRecipient=>'criticaljobalerts**at**mycompany.com',
                         pSubject=>'CRITICAL ALERT: Job failure in '||v_script||' ('||p_job_id||')',
                         pMessage=>'Job Description: '||v_description||chr(13)||chr(13)||'Operations Team please ensure you contact one of the following people via telephone a.s.a.p.'||chr(13)||chr(13)||'Comments: '||chr(13)||v_comment_text);
            else
               send_mail(pSender=>'redwood**at**mycompany.com',
                         pRecipient=>'basisteam**at**mycompany.com',
                         pSubject=>'Alert: Job failure in '||v_script||' ('||p_job_id||')',
                         pMessage=>'Job Description: '||v_description||chr(13)||'Comments: '||chr(13)||v_comment_text);
            end if;
        end if;
    end;
    Hope this was useful.
    Regards
    Guy

  • Mapping Design  - SOAP body content needs to be different between test and production

    Hello,
    We are integrating with a 3rd party SOAP receiver who uses the same web service URLS for test and production.
    So to differentiate they exposed 2 web services which do the same thing but have different root and payload node names...along with account details.
    For example, for production our SOAP XML must follow pattern like:
    <Envelope>
    <Body>
    <appRequest>
    <userID>produser</userID><password>prodpwd</password>
    <appPayload>
    <?xml>
    blah blah this XML is the same between test and production
    </xml>
    </appPayload>
    etc
    But for their testing we must use:
    <Envelope>
    <Body>
    <appRequestTest>
    <userID>testuser</userID><password>testpwd</password>
    <appPayloadTest>
    <?xml>
    blah blah this XML is the same between test and production
    </xml>
    </appPayload>
    etc
    So I'm trying to think of a good way to handle this difference in one set of mappings that we can use in our 3 PI platforms Dev / Test / Prod
    Since these differences are in the SOAP Body does it need handled in mapping or is there a way to handle it in the Adapter Config which is naturally different between our environments (mapping we like to keep the same).
    What is a smart way to handle this scenario?
    Many thanks,
    Aaron

    I second Artem when he states that this is a bad design decission from the caller's side.
    However this is not gonna help you in the current situation, right?
    The problem you are facing is that by poor design the message does not have a root node which you may use to handle occurences. Let me explain further
    You would be good if prod message looked like so
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header/>
    <soapenv:Body>
      <appData>
       <appRequest>
       </appRequest>
      </appData>
    </soapenv:Body>
    </soapenv:Envelope>
    and test message looked like so
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header/>
    <soapenv:Body>
      <appData>
       <appRequestTest>
       </appRequestTest>
      </appData>
    </soapenv:Body>
    </soapenv:Envelope>
    --> Then you would have been able to specify occurence of <appRequest> and <appRequestTest> as 0..1
    So I think you have (besides what Artem already pointed out) 2 other options:
    1. activate "do not use SOAP envelope" on sender SOAP channel and then designing the data types like above
    2. Use HTTP instead of SOAP adapter and designing data types like above
    Hope I didn't miss something crucial :-)
    Cheers
    Jens

  • Can SOAP body have multiple immediate children without splitting the msg

    We have a vendor we need to send a SOAP message to, but they require the SOAP body have two different immediate children.  In graphical mapping this doesn't seem to be possible. 
    If we create separate external definitions for each, then they would become separate target messages once added to a message mapping.  If we try to combine the XSDs into one, import it as an external definition, and add it to the mapping, It prompts us to choose one of the elements of the external def from the top level.  The only way to choose a second is to add another, which again results it two separate target messages.
    Is our vendor's request compliant with W3C standards?  If so, is this just a limitation of graphical mapping and what are the most common workarounds in PI?

    >>If we create the SOAP envelope with our mapping, then does that affect the ability to use the SOAP adapter to provide a digital signature?
    This is what I would do. Consider synchronous scenario. If you sign the message digitally and send it to system A (say outbound)  and you need to have the same soap message structure (inbound)  during signature verification. Otherwise signature verification process will fail.
    Do as follow
    Outbound
    A) First mapping: Adding soap envelope  using (XSLT mapping) or java mapping or any way
    B) Second mapping: Signing the message using digital signature via java mapping
    Inbound
    First mapping should be digital signature verify using java mapping
    if the requirement to remove/modify saop envelope on the inbound side or any changes in structure only after the signature verification

  • How to XI error message will mapped to the SOAP faul message-SOAP(Axis)

    Hi,
      Receiver end I am using SOAP (Axis) adapter and I am getting the system error and I am not getting the payload in SXMB_MONI.
    What ever the error message how do MAP as a SOAP Fault message in SXMB_MONI.
    I found the Solution from OSS note 1039369 but did not explain where to set what parameter and what modules...
    SOAP Fault code
    If parameter Category is XIAdaptger, Area SOAP, Code FAULT
    In this case, parameters P1 and P2 may be set to the fault namespace and fault name. If these parameters are set, the SOAP fault code is set to namespace P1 and name P2. Otherwise, it is set as in other cases.
    For all other cases
    In this case, the SOAP fault code is set to namespace "http://sap.com/xi/XI/Message/30" and name category.area.code, where category, area, code represent the XI error category, area, and code values, respectively.
    SOAP detail
    If parameter ApplicationFault is set
    The SOAP detail child is set to the XI application payload. If, however, the payload extraction mode is set to Envelope, the application payload is taken as the SOAP envelope and the SOAP detail content is set to its body content. Similarly, if the extraction mode is set to Body, the application payload is taken as the SOAP body and the SOAP detail content is set to its content.
    Otherwise
    No SOAP detail content is set in this case.
    Examples
      XI error element
    <sap:Error ...>
      <sap:Category>XIAdapterFramework</sap:Category>
      <sap:Code area="MESSAGE">GENERAL</sap:Code>
      <sap:AdditionalText>Failed to determine a receiver agreement for the given message.</sap:AdditionalText>
    </sap:Error>
    SOAP fault element
    <soapenv:Fault>
      <faultcode xmlns:ns1="http://sap.com/xi/XI/Message/30">ns1:XIAdapterFramework.MESSAGE.GENERAL</faultcode>
      <faultstring>Failed to determine a receiver agreement for the given message.</faultstring>
      <detail/>
    </soapenv:Fault>
    Help appriciated
    Regards,
    Venu.
    Edited by: Venugopalarao Immadisetty on Sep 24, 2009 3:39 PM

    Using Receiver SOAP Axis adapter and I am getting the below exception
    XI error element
    <sap:Error ...>
    <sap:Category>XIAdapterFramework</sap:Category>
    <sap:Code area="MESSAGE">GENERAL</sap:Code>
    <sap:AdditionalText>Failed to determine a receiver agreement for the given message.</sap:AdditionalText>
    </sap:Error>
    and above exception how do I convert as a SOAP Fault message..
    SOAP fault element
    <soapenv:Fault>
    <faultcode xmlns:ns1="http://sap.com/xi/XI/Message/30">ns1:XIAdapterFramework.MESSAGE.GENERAL</faultcode>
    <faultstring>Failed to determine a receiver agreement for the given message.</faultstring>
    <detail/>
    </soapenv:Fault>
    Any idea what modules need to add in Receiver SOAP Axis adapter.

  • Soap body xml different on server

    Hello,
    I am trying to verify a soap body string using a signature in the soap header. But am getting a slightly modified version of the soap message on the server side handler.
    Here is how my client side handler soap body looks:
    <n1:xyz xmlns:n1="http://localhost/edm/DocMgmtParametersRetriever">
    </n1:xyz>
    On the server side,
    <n1:xyz xmlns:n1="http://localhost/edm/DocMgmtParametersRetriever"></n1:xyz>
    The differences are:
    1.There is an extra space between n1:xyz and xmlns on the client side.
    2.There is a line break before </n1:xyz> on the client side which is not present on the server side.
    When I add following lines of code on client side, the soap body looks the same and server is able to verify the signature.
    soapBody = soapBody.replaceAll(" xmlns:"," xmlns:");
    soapBody = soapBody.replaceAll("\n","");
    soapBody = soapBody.replaceAll("\r\n","");
    soapBody = soapBody.replaceAll("\r","");
    The server is on weblogic 8.1 sp3. The webservice java client is using saaj-api.jar
    Any clue as to why there is a difference?
    Thank you

    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?

Maybe you are looking for

  • Blank CD's do not show up on desktop

    I have a G5 Imac. When is insert a blank disc it does not show on desktop. Recorded disc do. It work the day before and now it will not let me copy files or burn.

  • Error while saving web template in WAD? Error in opening RFC Connection?

    Hi All. In BI 7.0, While trying to save an web template using BEx WAD resulting an error as mentioned below: " Java communication error : Error when opening an RFC connection " Who provides this RFC connection? - By Basis guy or BI Guy or EP guy or h

  • RFFOJP_T Outgoing report for country JAPAN which generates a payment file

    There is a sub routine KATAKANA in this japan report RFFOJP_T i have made some corrections in the code such as invalid_character = '?,:.,,'  here are few japanese comma's which are not supported by non unicode system but supported by unicode system.

  • Lost Firefox replaced with Microsoft Word when updating Firefox

    I was offered a chance to update Firefox - it said update now or later. Stupidly I said now and since then I have problems. My start button has lost the internet connection and has been replaced with Microsoft Word. I cannot get my old bookmarks and

  • Contacts and Google question

    Can someone describe to me how your contacts and synching them with Google work? I noticed today that some contacts were missing on my iPhone after I deleted than re-set up my phone with Microsoft Exchange. Most numbers and calendars will all synched