Access to XI SOAP envelope - How to?

Hello there,
Is it possible to get access and manipulate the Standard SOAP envelope headers internally used by XI? Does XI supports this functionality/customization?
I would like to enrich/enhance the XI SOAP headers with some own context data to be used later for end-to-end monitoring outside XI.
Thanks for your feedback.
Cheers,
R.

Thanks Anupam and Jenny for your kind response.
I am wrking on PI 7.0. I dnt want soap envelope in payload so I have already checked the 'Do not create response' button still in response message I am getting the soap envelope.
I can use java or xslt but the the structure is not able to read the soap envelope. To read it I need to create same data structure which matches with the soap envelope.
this is the response I am getting through webservice.
<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<createResponse>
<result>
<errors>
<message>Config Master Record Type Name value is missing</message>
<statusCode>FIELD_CUSTOM_VALIDATION_EXCEPTION</statusCode>
</errors>
<id xsi:nil="true" />
<success>false</success>
</result>
</createResponse>
</soapenv:Body>
</soapenv:Envelope>
And this is the wsdl structure
<?xml version="1.0" encoding="UTF-8"?>
<ns0:createResponse xmlns:ns0="urn:enterprise.soap.sforce.com">
   <ns0:result>
      <ns0:errors>
         <ns0:fields/>
         <ns0:message/>
         <ns0:statusCode/>
      </ns0:errors>
      <ns0:id/>
      <ns0:success/>
   </ns0:result>
</ns0:createResponse>
Because of the soap envelope it is not able to read it. I have to create new structure.
Experts please help me to solve this problem.
Regards,
Jayesh.

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.

  • 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.

  • How to build my own SOAP envelope

    Hi
    after a lot of work I have now realised that my SOAP to SOAP scenario can't use SAP XI std SOAP ENVELOPE on the receiver part.
    How to I build my own SOAP ENV in my RECEIVER payload? iMaybe in the mapping or in the WSDL/XSD?
    Any guides or experienses are welcome
    hope someone can help
    cheers

    Hi Bowie,
    Here is one possible approach...
    1) Set "Do Not Use SOAP Envelope" in your Receiver SOAP Adapter.
    2) Add this xsl as a second step in your interface mapping.
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
        <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
          <env:Body>
            <xsl:copy>
              <xsl:apply-templates select="@*|node()"/>
            </xsl:copy>
          </env:Body>
        </env:Envelope>
      </xsl:template>
      <xsl:template match="@*|node()">
        <xsl:copy>
          <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
      </xsl:template>
    </xsl:stylesheet>
    You can then modify the soap envelope nodes above to create what you need.
    -Russ

  • OSB: how to remove soap envelope from the $body

    Hi,
    In Assign activity when i assign: xquF1:url-decode(fn-bea:serialize($body),"UTF-8") = variable1,i am getting:
    $variable1 =
    <soap-env:Body      xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
         <MESSAGE>
    <aa>12</aa>
    <bb>34</bb>
    </MESSAGE>
    </soap-env:Body>
    How should i remove 'soap-env:Body' from the above xml. I need only:
    $variable1 =
         <MESSAGE>
    <aa>12</aa>
    <bb>34</bb>
    </MESSAGE>
    Kindly advise how to acheive the same.
    Thanks in advance.
    Edited by: user9223904 on Apr 17, 2013 2:25 AM
    Edited by: user9223904 on Apr 17, 2013 2:26 AM

    just use $body/* and you will have what u wanted.

  • How to override the default SOAP envelope prefix?

    I have a Web service as an external reference. In run-time WebLogic generates SOAP messages with a default prefix <env:Envelope xmlns:env=http://schemas.xmlsoap.org/soap/envelope/”…>. Normally this is fine. However the Web service required a prefix as <soapenv:…>. How can I have WebLogic generate soap envelope prefix as soapenv instead env?

    hello!
    It's possible. You must implement handler and change envelope and body prefix. Here is example:
    public class WsHandler implements SOAPHandler<SOAPMessageContext> {
    public boolean handleMessage(SOAPMessageContext context) {
    Boolean outboundProperty =
    (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
    if (outboundProperty.booleanValue()) {
    try {
    SOAPEnvelope envelope = context.getMessage().getSOAPPart().getEnvelope();
    envelope.setPrefix("soapenv");
    envelope.removeNamespaceDeclaration("env"); //remove old prefix
    envelope.getBody().setPrefix("soapenv");
    context.getMessage().saveChanges();
    } catch (Exception e) {
         throw new ProtocolException(e);
    }

  • How to create soap envelope structure

    Hello Friends,
    I am working on a RFC to webservice sync scenario.Here I am getting response from webservice in soap envelope form which is not matching with my wsdl response structure. I have tried to create the envelope structure manually  but i dint get success. Can any body guide me how to over come with it.
    (I have already checked 'Do not create soap envelop' in receiver soap addapter).
    Regards,
    jayesh.

    Thanks Anupam and Jenny for your kind response.
    I am wrking on PI 7.0. I dnt want soap envelope in payload so I have already checked the 'Do not create response' button still in response message I am getting the soap envelope.
    I can use java or xslt but the the structure is not able to read the soap envelope. To read it I need to create same data structure which matches with the soap envelope.
    this is the response I am getting through webservice.
    <?xml version="1.0" encoding="UTF-8" ?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <createResponse>
    <result>
    <errors>
    <message>Config Master Record Type Name value is missing</message>
    <statusCode>FIELD_CUSTOM_VALIDATION_EXCEPTION</statusCode>
    </errors>
    <id xsi:nil="true" />
    <success>false</success>
    </result>
    </createResponse>
    </soapenv:Body>
    </soapenv:Envelope>
    And this is the wsdl structure
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:createResponse xmlns:ns0="urn:enterprise.soap.sforce.com">
       <ns0:result>
          <ns0:errors>
             <ns0:fields/>
             <ns0:message/>
             <ns0:statusCode/>
          </ns0:errors>
          <ns0:id/>
          <ns0:success/>
       </ns0:result>
    </ns0:createResponse>
    Because of the soap envelope it is not able to read it. I have to create new structure.
    Experts please help me to solve this problem.
    Regards,
    Jayesh.

  • How much commands possible in a SOAP Envelope?

    Hi all!
    How much commands are possible in a single SOAP transaction?
    Best regards
    Marian

    Do you mean like this???
    <b>BatchInteract Interface Structure</b>
    <i>The BatchInteract method enables you to perform multiple transactions in the database using a single SOAP request message. For example, you can add 1000 items to the database in a single SOAP request message.
    The main advantage of using this method instead of the Interact method is that if a single transaction fails all remaining transactions are not affected.
    The BatchInteract structure consists of an Envelopes element that contains a separate Envelope element for each transaction as shown below.
    </i>
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
    <Envelopes>
        <Envelope>
        </Envelope>
        <Envelope>
        </Envelope>
    </Envelopes>
    The structure of each envelope is the same as described in DI Server SOAP Message Structure of SDK.

  • How To Create SOAP Envelop For WSDL

    Hi Friends,
    I have created one  webservice WSDL and i want to create SOAP Envelop for this.
    Can any one help me out how to create SOAP Envelop based on WSDL.
    ***************My WSDL***********************************
    <?xml version="1.0" encoding="UTF-8" ?>
    - <!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.5.
    -->
    - <!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.5.
    -->
    - <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://annotation/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://annotation/" name="MyCompanyWS">
    - <types>
    - <xsd:schema>
    <xsd:import namespace="http://annotation/" schemaLocation="http://localhost:7101/WebService-Annotation-context-root/MyCompanyPort?xsd=1" />
    </xsd:schema>
    </types>
    - <message name="setMyDepts">
    <part name="parameters" element="tns:setMyDepts" />
    </message>
    - <message name="setMyDeptsResponse">
    <part name="parameters" element="tns:setMyDeptsResponse" />
    </message>
    - <message name="getMyDepts">
    <part name="parameters" element="tns:getMyDepts" />
    </message>
    - <message name="getMyDeptsResponse">
    <part name="parameters" element="tns:getMyDeptsResponse" />
    </message>
    - <message name="addEmployeeToDept">
    <part name="parameters" element="tns:addEmployeeToDept" />
    </message>
    - <message name="addEmployeeToDeptResponse">
    <part name="parameters" element="tns:addEmployeeToDeptResponse" />
    </message>
    - <message name="getDeptInfo">
    <part name="parameters" element="tns:getDeptInfo" />
    </message>
    - <message name="getDeptInfoResponse">
    <part name="parameters" element="tns:getDeptInfoResponse" />
    </message>
    - <portType name="MyCompany">
    - <operation name="setMyDepts">
    <input message="tns:setMyDepts" />
    <output message="tns:setMyDeptsResponse" />
    </operation>
    - <operation name="getMyDepts">
    <input message="tns:getMyDepts" />
    <output message="tns:getMyDeptsResponse" />
    </operation>
    - <operation name="addEmployeeToDept">
    <input message="tns:addEmployeeToDept" />
    <output message="tns:addEmployeeToDeptResponse" />
    </operation>
    - <operation name="getDeptInfo">
    <input message="tns:getDeptInfo" />
    <output message="tns:getDeptInfoResponse" />
    </operation>
    </portType>
    - <binding name="MyCompanyPortBinding" type="tns:MyCompany">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="" />
    - <operation name="setMyDepts">
    <soap:operation soapAction="" />
    - <input>
    <soap:body use="literal" />
    </input>
    - <output>
    <soap:body use="literal" />
    </output>
    </operation>
    - <operation name="getMyDepts">
    <soap:operation soapAction="" />
    - <input>
    <soap:body use="literal" />
    </input>
    - <output>
    <soap:body use="literal" />
    </output>
    </operation>
    - <operation name="addEmployeeToDept">
    <soap:operation soapAction="" />
    - <input>
    <soap:body use="literal" />
    </input>
    - <output>
    <soap:body use="literal" />
    </output>
    </operation>
    - <operation name="getDeptInfo">
    <soap:operation soapAction="" />
    - <input>
    <soap:body use="literal" />
    </input>
    - <output>
    <soap:body use="literal" />
    </output>
    </operation>
    </binding>
    - <service name="MyCompanyWS">
    - <port name="MyCompanyPort" binding="tns:MyCompanyPortBinding">
    <soap:address location="http://localhost:7101/WebService-Annotation-context-root/MyCompanyPort" />
    </port>
    </service>
    </definitions>
    Thanks in Advance.
    Bachan
    Edited by: Bachan on Sep 1, 2010 9:04 PM

    Thanks Sam,
    SOAP UI saved my life but that want last long.
    But still my issue is not resolved.
    I am using a plsql program to take the Values from SOAP envelop and pass it to web-service and get the responce.
    I am sure my approach is perfectly fine. because it is working fine with other examples, but mean while i have a WSDL link this is really big and my program is not working for this WSDL link.
    infact i am getting the output as the same XML of URL.
    Let me know if u can help me out.
    Thanks
    Bachan.

  • How to resolve error "No SOAP Envelope but 1 {} PARAMETERS"

    Hi,
    I have configured an interface where the sender (SAP system) sends out a message via proxy on the Local Integration Engine, which is after XI processing supposed to be posted via HTTP (using the SOAP Adapter).
    The message is processed correctly by XI, but fails to pass the SOAP Comm Channel. The error message in the Communication Channel Monitoring reads:
    SOAP: call failed: java.io.IOException:No SOAP Envelope but 1 {} PARAMETERS; HTTP 200 OK
    Can anyone help me understand what this means and how I can resolve this? Thanks!

    Dear Johannes,
    Is the SOAP call taking place synchronously ? It looks like at the end of your SOAP channel, system is not responding as expected by XI (you seem to receive the regular HTTP 200 OK code, but it does not match SOAP protocol requirements) ...
    I've had such issues when web services were down due to web server issue (in this case, you just get, for instance, HTTP 500 response body, which not really SOAP compliant)
    Rgds
    Chris

  • How to create a new namespace in SOAP envelope?

    I'm trying to create SOAP envelope like the following: 
      <my:Envelope xmlns:my="http://my.com/">
        <my:Header/>
        <my:Body/>
      </my:Envelope>and the following are the codes:  SOAPFactory soapFactory = SOAPFactory.newInstance();
      MessageFactory factory = MessageFactory.newInstance();
      SOAPMessage msg = factory.createMessage();
      SOAPPart part = msg.getSOAPPart();
      SOAPEnvelope env = part.getEnvelope();
      SOAPElement name = env.addNamespaceDeclaration("my", "http://my.com/");
      msg.writeTo(System.out);However, the code generates the following results:  <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:my="http://my.com/">
        <SOAP-ENV:Header/>
        <SOAP-ENV:Body/>
      </SOAP-ENV:Envelope>What should I do to remove the SOAP-ENV namespace? What is the clean way to create a new SOAP envelope?
    Appreciate your advice, thank you!

    OK, I found a way to do it:  SOAPFactory soapFactory = SOAPFactory.newInstance();
      MessageFactory factory = MessageFactory.newInstance();
      SOAPMessage msg = factory.createMessage();
      SOAPPart part = msg.getSOAPPart();
      SOAPEnvelope env = part.getEnvelope();
      // 1) must add the new namespace before deleting the default namespace
      SOAPElement name = env.addNamespaceDeclaration("my", "http://my.com/");
      // 2) now only we can delete the default namespace
      env.removeNamespaceDeclaration("SOAP-ENV");
      // 3) then change the prefix of other parts one by one...
      env.setPrefix("my");
      msg.getSOAPHeader().setPrefix("my");
      msg.getSOAPBody().setPrefix("my");Does anyone has a better way (cleaner) to do it?

  • PB & web service : how to manipulate soap envelop ?

    Hi all,
    I am in the process of testing PB's ability to consume an existing web service. I have done some reading left and right.
    I can create the proxy , but i always end up having the Cannot invoke webservice messagebox.
    Here's my little piece of PB code 
    PB CODE START
    soapconnection conn // Define SoapConnection
    checkvatport proxy_obj // Declare proxy
    long rVal, lLog
    real amount
    date date_a
    string ls_a,ls_b,ls_c
    conn = create soapconnection  //Instantiated connection
    lLog = conn.SetSoapLogFile ("C:\mySoapLog.log")
    rVal = Conn.CreateInstance(proxy_obj, "checkvatport", "")
    messagebox("test rval",string(rval))
    // Create proxy object
    try
       date_a = today()
      boolean w_t
      w_t = TRUE
       str_checkvat str1
       tns1__checkvatresponse str2
      str1.countrycode = "BE"
      str1.vatnumber = "0810416786"
      ls_a  = proxy_obj.checkvat(str1.countryCode,str1.vatNumber,str2.requestdate,str2.valid,str2.address)
      messagebox("LS-a",ls_a)
    catch ( SoapException e )
       messagebox ("Error", "Cannot invoke Web service")
       // error handling  
    end try
    destroy conn
    PB CODE END
    And here's the soaplog contents
    SOAPLOG START
    CLOSED
    REQUEST:
    CLOSED
    POST /taxation_customs/vies/services/checkVatService HTTP/1.1
    Host: ec.europa.eu
    Connection: Keep-Alive
    User-Agent: EasySoap++/0.6
    Content-Type: text/xml; charset=utf-8
    SOAPAction: "urn:ec.europa.eu:taxud:vies:services:checkVat#checkVat"
    Content-Length: 654
    <E:Envelope
      xmlns:E="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:A="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:s="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:y="http://www.w3.org/2001/XMLSchema"
      E:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <E:Body>
    <m:checkVat
      xmlns:m="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
    <ns1:countryCode
      xmlns:ns1="urn:ec.europa.eu:taxud:vies:services:checkVat"
      s:type="y:string">BE</ns1:countryCode>
    <ns2:vatNumber
      xmlns:ns2="urn:ec.europa.eu:taxud:vies:services:checkVat"
      s:type="y:string">0810416786</ns2:vatNumber>
    </m:checkVat>
    </E:Body>
    </E:Envelope>
    RESPONSE:
    HTTP/1.1 500 Internal Server Error
    Date: Wed, 04 Jun 2014 09:33:11 GMT
    Transfer-Encoding: chunked
    Content-Type: text/xml; charset=UTF-8
    Server: Europa
    Connection: Keep-Alive
    Transfer is Chunked!
    01d7
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Client</faultcode><faultstring>Unmarshalling Error: unexpected element (uri:"urn:ec.europa.eu:taxud:vies:services:checkVat", local:"countryCode"). Expected elements are &lt;{urn:ec.europa.eu:taxud:vies:services:checkVat:types}vatNumber>,&lt;{urn:ec.europa.eu:taxud:vies:services:checkVat:types}countryCode> </faultstring></soap:Fault></soap:Body></soap:Envelope>
    0000
    GetChunkLength: 01d7 = 471
    Connection Disconnected
    SOAPLOG END
    Now i tried the to cut and paste the above soap envelop in SOAPUI , and it gives me the exact same error message as in the soaplog.
    I then tried creating a request through SOAPUI but based on the wdsl ,SOAPUI is giving me a different soap envelop as the one PB generated ?
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
       <soapenv:Header/>
       <soapenv:Body>
          <urn:checkVat>
             <urn:countryCode>?</urn:countryCode>
             <urn:vatNumber>?</urn:vatNumber>
          </urn:checkVat>
       </soapenv:Body>
    </soapenv:Envelope>
    If i enter parameters in the above envelop and check it through SOAPUI , i end up having the result i want.
    Is there any way we can manipulate the soap envelop contents ? Or does anyone have any idea why the soap envelop generated by PB ends up having the above mentioned error in the soaplog file ?
    What am i missing ?
    TIA
    John

    You're using the EasySOAP proxy.  You didn't mention what version of PowerBuilder, but if you're using a version that supports the .Net engine instead use that.  The EasySOAP web service support is quite old.
    Once you do that you won't be able to use the log.  Instead, use something like Fiddler to trap the request and response.

  • Receive complete SOAP Envelope as message

    Dear all
    I have a web service that I have to consume which has a signature value in the SOAP header. In order that I can validate the signature with the message I would like to receive the complete SOAP envelope as (XML) message (<envelope>...<soap-env:header>...</soap-env:header>...<soap-env:body></soap-env:body></envelope>).
    I couldn't find a solution for this.
    Currently I use the WCF-Custom adapter to receive the multi part message (xml schemas created with svcutil) and receive the body as XML file. I also know how to access the SOAP header in the message but I would like to know if its possible to receive the
    complete envelope as message.
    Best regards
    Jerome

    Orchestration subscription includes value for BTS.MessageType context property, this mean you can't start orchestration with the soap envelope message type because the XmlDisassembler Component will discard the soap:Envelope content and the messaging engine
    will only get the soap:Body content – so at the end of the process, BTS.MessageType context property will be set to the actual message type of content under soap:Body section and the orchestration will never start with the type soap:Envelope.
    In case you need to process the entire soap:Envelope inside orchestration:
    Use PassThruReceive pipeline.
    Define message of type BTS.soap_envelope_1__1 message inside the orchestration (Message Type > schemas > from referenced assembly > Microsoft.BizTalk.GlobalPropertySchemas).
    Use Xml Document as the incoming message.
    Assign the incoming Xml Document message to the BTS.soap_envelope_1__1 message.
    Reference :
    http://pinhask.blogspot.in/2008/06/processing-soap-envelope-within-biztalk.html
    Thanks
    Abhishek

  • JAVA/ XSLT Mapping to Create a SOAP Envelope

    Hello,
    I have a File to SOAP scenario and it requires the SOAP message with a custom SOAP envelope. I have searched SDN and could only find that SOAP envelope can be created using a JAVA or XSLT mapping. However, I could not find any blog/ article which will help me understand, with an example, how this is actually coded (creating of a custom SOAP envelope).
    Can anyone please point me to a valid blog/ article/ wiki which describes the procedure?
    Thanks,
    Pankaj.
    P.S. Please no spamming of post with links on SOAP Envelope; I have already searched on SDN

    Hello,
    Here is a wiki using PI 7.1
    https://wiki.sdn.sap.com/wiki/display/XI/SampleJAVAMappingcodeusingPI7.1+API
    If you want to create a SOAP Envelope, comment out the codes
      private static final DynamicConfigurationKey KEY_FILENAME =
             DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","FileName");
    String inParam = arg0.getInputParameters().getString("PARAM_IN1");
         getTrace().addInfo("Input Parameter: " +inParam);
         int offset = inData.indexOf(inParam);
         //7. Reader Message ID from Message Header
         InputHeader messageHeader = arg0.getInputHeader();
         String messageId = messageHeader.getMessageId();
         //8. A DynamicConfiguration is a map containing adapter specific message attributes.
         // It associates DynamicConfigurationKeys with string values. The DynamicConfiguration object is obtained using
         // method getDynamicConfiguration()of class com.sap.aii.mapping.api.TransformationInput;
         DynamicConfiguration conf = arg0.getDynamicConfiguration();
         conf.put(KEY_FILENAME, "This Test file is set by JAVA Mapping");
         String outData = "";if(offset > 0){
         int offset1 = inData.indexOf(">", offset);
         String StartString =inData.substring(0,offset1);
         String DocumentNameSpace = " xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.002.001.02\"";
         String RemainingString = inData.substring(offset1);
    lastly, instead of using
    outData = StartString + DocumentNameSpace + RemainingString;
    replace it with something like this
    String outData = "";
    outData = "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:tem=\"http://yournamespace/\"><soap:Header/><soap:Body>"+inData.substring(inData.indexOf("?>")+2)+"</soap:Body></soap:Envelope>";
    Hope this helps,
    Mark

  • Generating SOAP Envelope when DO NOT USE ENVELOPE option is marked

    My scenario: SPROXY => XI => 3rdParty WebService. Communication is synchronous. I've a problem with soap envelope. It is required by webservice, but when I use standard soap envelope generated by SAP I've a problem with receiving response from webservice.
    So I want to create my own envelope. For this reason I've used DO NOT USE SOAP ENVELOPE option. Now the challenge comes. How can I create my own soap envelope?
    Do you have any working example? Soap envelope should be added to message send from XI to 3rdParty WebService.
    Helping answers => a lot of points

    I'm talking about HTTP header.
    When I'm sending SOAP request from SAP my whole message looks like when I use soap envelope
    POST / HTTP/1.0
    Accept: */*
    Host: 192.168.132.179:54000
    User-Agent: SAP-Messaging-com.sap.aii.messaging/1.0505
    Content-ID: <soap-02cce7702b1a11dd9902000c29ee261e[at]sap.com>
    Content-Type: text/xml; charset=utf-8
    Content-Disposition: attachment;filename="soap-02cce7702b1a11dd9902000c29ee261e[at]sap.com.xml"
    Content-Description: SOAP
    Content-Length: 259
    SOAPACTION:
    <SOAP:Envelope xmlns:SOAP='http://schemas.xmlsoap.org/soap/envelope/'><SOAP:Header/><SOAP:Body><ns0:Sd2Ids_SzfExport xmlns:ns0='http://www.dat.de/sdii/ids/Sd2SOAP.wsdl'><arg1>1234567899-0</arg1><arg2>1</arg2></ns0:Sd2Ids_SzfExport></SOAP:Body></SOAP:Envelope>
    Always after such request I got and HTTP 411 error.
    In opposite, when I'm sending request from e.g. Altova or SoapUI, my message looks:
    POST / HTTP/1.1
    Content-Type: text/xml; Charset=UTF-8
    User-Agent: XML Spy
    Host: 192.168.132.179:54000
    Content-Length: 489
    Connection: Keep-Alive
    Cache-Control: no-cache
    <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>
              <m:Sd2Ids_SzfExport xmlns:m="http://www.dat.de/sdii/ids/Sd2SOAP.wsdl">
                   <arg1 xsi:type="xsd:string">1234567899-0</arg1>
                   <arg2 xsi:type="xsd:string">1</arg2>
              </m:Sd2Ids_SzfExport>
         </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    After that request WebService response is correct.
    You can find such differences (except Content-length which is a result of XML message formatting) in those two headers:
    - for first is used HTTP 1.0 protocol for later 1.1
    - in SAP header an info about attachment is added
    After a lot of test I thing that those attachment info in header of HTTP is causing a problem. So I want to use DO NOT USE SOAP ENVELOPE option to generate HTTP header without Content-Disposition and generate SOAP Envelope manually.

Maybe you are looking for

  • Command Window control

    Hi, I was wondering if there was a way to control whether or not input appears in the command (MS-DOS) window or not. For example, if I have a program that does something like this: Please enter a Sentence. I am going to the store. presses enter Is t

  • How can I group two annotations with JavaScript?

    I create two annotations with JavaScript: var annot1 = this.addAnnot({                   page: 0,                   type: "Square",                   rect: [150, 150, 180, 180],                   name: "OnMarketShare",                   author: "A. C

  • OWB steps

    do somebody have a document with detailed steps of how to design a datawarehouse set up using the owb. I don't have any idea about the Mappings and Transformations. Searched in net for documents, didn't find anything. So somebody help.

  • What is the FP_CHECK_DESTINATION_SERVICE output ???

    Hi guys, I need to know what is the output from the report FP_CHECK_DESTINATION_SERVICE When I run it (with & without destination service) I get only an information message saying: 9.327 bytes transferred in Is this OK or I have a problem ? Regards,

  • My ipod touch 4 not detecting

    my ipod 4 is detecting in itunes but then when i want to get my video files from the my computer  it does not show but sometimes it might and it is getting really annoying it charges and evreything so plaese help it does not even show the icon ipod t