SOAP Header issues

1. I am using ADOBE Acrobat Professional 7.0 to create PDF Application.
2. I want to call web service from PDF Form ( Not RPC type)
3. Herewith I am attaching all my samples.
I want the out put like testsoapspipcdr.xml ( refer the attachment )
I am getting the out put like pdfform.xml
The script I am using is attached here - script.txt
Please let me know how should I get the right output like "testsoapspipcdr.xml"
Script.txt
var CNAMessage = xfa.data.saveXML();
xfa.host.messageBox(CNAMessage);
var cURL = "http://localhost:9081/ECMSpecialtyWeb/services/CNARouterPort";
var NS = "http://schemas.xmlsoap.org/ws/2004/08/addressing:";
var oHeader = {};
oHeader[NS + "To"] =
soapType: "",
soapValue: "com.cna.app.ecmspecialty.producer.CfECMSpecialtyProducerImpl"
var oResultHeader = {};
var oRequest = {};
oRequest[""+""] = {soapType: "",soapValue:"<test></test>"};
var response = SOAP.request(
cURL: cURL,
oRequest: oRequest,
cAction: "http://testurl.com",
oReqHeader: oHeader,
oRespHeader: oResultHeader
pdfform.xml ( This is what I am getting )
<SOAP-ENV:Header>
<ns0:To SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://schemas.xmlsoap.org/ws/2004/08/addressing" xsi:type="">com.cna.app.ecmspecialty.producer.CfECMSpecialtyProducerImpl</ns0:To>
</SOAP-ENV:Header>
testsoapspipcdr.xml ( expected format )
<soapenv:Header>
<wsu:Timestamp xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:cnaUtility="http://www.cna.com/services/runtime/utility">
<Created cnaUtility:Sender="MXPCHWKAMSU" xmlns="">Fri Nov 11 16:18:18 CST 2005</Created>
</wsu:Timestamp>
<wsa:To cnaAddressing:packageName="CNACSPIServicePackage1" cnaAddressing:serviceName="FindPPCAddresses" cnaAddressing:versionName="1" cnaAddressing:consumerType="DEFAULT" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:cnaAddressing="http://www.cna.com/services/runtime/addressing">com.cna.app.ppc.prod ucer.CfSPIPPCProducerImpl</wsa:To>
<wsa:RelatesTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">uuid:NFAD2890030111DAB20AC9B 618A69ADD</wsa:RelatesTo>
<wsa:MessageID xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">uuid:NFAD2890030111DAB20AC9B 618A69ADD</wsa:MessageID>
<serviceConsumer:serviceConsumer xmlns:serviceConsumer="http://services.cna.com/serviceConsumer">
<cnaApplicationName xmlns="">SampleConsumer</cnaApplicationName>
<cnaLanguage xmlns="">en</cnaLanguage>
<cnaLocale xmlns="">US</cnaLocale>
<cnaConsumerPlatform xmlns="">WAS</cnaConsumerPlatform>
<cnaAddressing:cnaLogLevel xmlns:cnaAddressing="http://www.cna.com/services/runtime/addressing">-1</cnaAddressing:cn aLogLevel>
<cnaCheckPermission xmlns="">false</cnaCheckPermission>
</serviceConsumer:serviceConsumer>
<ExtensionHeader xsi:nil="true" xmlns="http://services.cna.com/extHeader" />
</soapenv:Header>

Your message serialization is not SOAP 1.2 compliant. Unless you have access to the Acrobat source code so that you can re-write Acrobat to comply with the way your web service is setup, you'll need to modify your web service to make it SOAP 1.2 compliant.
http://www.w3.org/TR/soap12-part1/
> soapValue:"<test></test>"
As a note, I see you are trying to include extra tags in your message data. You can't do this. Acrobat will strip any superfluous XML tags when it generates the request.

Similar Messages

  • How do I access the DCJMS* variables in my response SOAP:Header ?

    Hi all,
    I have set up a sync / async Integration Process in XI
    This is initiated by a SAP R/3 transaction that calls a synchronous function to enter XI
    Once in the Bridge, a JMS receiver adapter sends out an asynchronous request message from XI to MQ
    A correlation allows the JMS sender adapter to return an asynchronous response message from MQ to XI back into my the Integration Process
    I have set up the JMS sender adapter configuration to return the DC (dynamic configuration) variables in the <SOAP:Header> of the XI response message along with the payload
    You can see that the DCJMS* variables are returned below
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--
    Response
      -->
    - <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SAP="http://sap.com/xi/XI/Message/30">
    - <SOAP:Header>
    + <SAP:Main xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" versionMajor="003" versionMinor="000" SOAP:mustUnderstand="1" wsu:Id="wsuid-main-92ABE13F5C59AB7FE10000000A1551F7">
    + <SAP:ReliableMessaging xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
    + <SAP:HopList xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
    + <SAP:RunTime xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
    + <SAP:PerformanceHeader xmlns:SAP="http://sap.com/xi/XI/Message/30">
    - <SAP:DynamicConfiguration xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSCorreleationID">40D982A0-B19D-11DB-9508-0002A5D5916B</SAP:Record>
      <SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSTimestamp">1170297456940</SAP:Record>
      <SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSMessageID">ID:414d5120514d4430312020202020202045c12b962001dd02</SAP:Record>
      </SAP:DynamicConfiguration>
    - <SAP:Diagnostic xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:TraceLevel>Information
    <b>Question</b>
    I want to access the DCJMS* variables but am not sure how to go about it as the
    variables exist in the <SOAP:Header>?
    I followed the SAP documentation to access adapter-specific attributes (refer to link http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm )
    I have used the following code to create a user-defined function for the accessing adapter specific attributes (similar to the link)
    public String Get_Msgid(Container container){
    DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get
    (StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    DynamicConfigurationKey key = DynamicConfigurationKey.create
    ("http://sap.com/xi/XI/System/JMS","DCJMSMessageID");
    String jmsMsgID = conf.get(key);
    return jmsMsgID;
    <b>Question</b>
    Do I use message mapping to extract the DCJMS* variables?
    <b>Question</b>
    If so then which message is used for the source message so that I can access the <SOAP:Header>?  Eg do I use the response message type or is there a trick to accessing the SOAP:Header?
    <b>Question</b>
    Do I use the user-defined function (like above)?
    I performed the following steps
    •     Opened the message mapping in edit mode
    •     Created the user-defined function using the graphical editor
    •     Saved the message mapping
    •     I have not connected the user-defined function to any of the xml tags in either the source or target messages
    When I go to test the message mapping I am getting the following error
    Compilation process error : CreateProcess: null\bin\javac -J-Xmx256m @E:/usr/sap/XID/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Mapd79a7bf0b65611dbaf390002a5d5916b/O1170817003886.txt @E:/usr/sap/XID/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Mapd79a7bf0b65611dbaf390002a5d5916b/S1170817003886.txt error=2
    STACKTRACE:
    com.sap.aii.ib.core.mapping.exec.ExecuteException: Compilation process error : CreateProcess: null\bin\javac -J-Xmx256m @E:/usr/sap/XID/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Mapd79a7bf0b65611dbaf390002a5d5916b/O1170817003886.txt @E:/usr/sap/XID/DVEBMGS00/j2ee/cluster/server0/./temp/classpath_resolver/Mapd79a7bf0b65611dbaf390002a5d5916b/S1170817003886.txt error=2
    at  com.sap.aii.ib.server.mapping.exec.ServiceUtil.compileSourceCode(ServiceUtil.java:207)
    at com.sap.aii.ib.server.mapping.exec.ServiceUtil.compile(ServiceUtil.java:156)
    at com.sap.aii.ibrep.server.mapping.ServerMapService.compileSourceCode(ServerMapService.java:361)
    at com.sap.aii.ibrep.server.mapping.ServerMapService.compileSourceCodeWithoutAndWithArchives(ServerMapService.java:301)
    at com.sap.aii.ibrep.server.mapping.ServerMapService.execute(ServerMapService.java:153)
    at com.sap.aii.ibrep.sbeans.mapping.MapServiceBean.execute(MapServiceBean.java:52)
    at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0.execute(MapServiceRemoteObjectImpl0.java:259)
    at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0p4_Skel.dispatch(MapServiceRemoteObjectImpl0p4_Skel.java:146)
    at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:304)
    at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:193)
    at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:122)
    at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
    at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
    at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
    at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    A thread in the SDN (Error while Activating Message Mapping, Posted: Jan 9, 2007 3:32 PM) suggests checking the java path on the XI machine
    This is JAVA_HOME=C:\j2sdk1.4.2_08 and seems ok
    <b>Question</b>
    Do you know why I would get the compilation error?
    Any assistance would be appreciated
    Regards,
    Mike

    Jin,
    My compilation issue has gone via a SAP recommendation to specify the JDK home directory in the instance profile
    Back to the mapping - I can now run my scenario
    <b>Source message</b>
    The response message has the following <SOAP:Header> from which I want to extract the DCJMSCorreleationID (note that it's misspelt)
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Response
      -->
    - <SAP:DynamicConfiguration xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSCorreleationID">40D982A0-B19D-11DB-9508-0002A5D5916B</SAP:Record>
      <SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSTimestamp">1170297456940</SAP:Record>
      <SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSMessageID">ID:414d5120514d4430312020202020202045c12b962001dd02</SAP:Record>
      </SAP:DynamicConfiguration>
    <b>Grahpical mapping</b>
    LHS - Response message with occurrance 0..1 so it is not connected to my UDF
    UDF Get_Corrid with no inputs
    RHS - The UDF output is connected to the Acknowledgement msg tag <ACK>
    <b>UDF</b>
    DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get
    (StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    DynamicConfigurationKey key = DynamicConfigurationKey.create
    ("http://sap.com/xi/XI/System/JMS","DCJMSCorreleationID");
    String Corrid = conf.get(key);
    return Corrid;
    <b>Target message</b>
    The idea is to copy the correlation id of the response message into the acknowledgement message.  But as you can see the result is NULL
      <?xml version="1.0" encoding="utf-8" ?>
    - <ns2:AWB0020_MARKET_DATA_RESPONSE_ACK xmlns:ns2="http://awb.com.au/mq/tx/MarketData">
      <ACK>null</ACK>
      </ns2:AWB0020_MARKET_DATA_RESPONSE_ACK>
    Please advise
    Thanks Mike

  • Calling Web Service with SOAP header from BPEL

    Hi,
    I am calling a web service (with header information) from BPEL. In the Invoke activity, i created a header variable to pass the header information.
    But, when i test the BPEL service, invoke activity fails because the header information is not being passed.
    Below is the error message (copied from clipboard).
    +<messages><input><Invoke_1_getsubinfo_InputVariable><part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="parameters"><getsubinfoElement xmlns="http://ws/its/tabs/webservices/SingleRowWS/SingleRowWS.wsdl">+
    +<pSubnoin>+
    +<insubno>12345678</insubno>+
    +</pSubnoin>+
    +</getsubinfoElement>+
    +</part></Invoke_1_getsubinfo_InputVariable></input><fault><bindingFault xmlns="http://schemas.oracle.com/bpel/extension"><part name="summary"><summary>exception on JaxRpc invoke:+
    start fault message:+
    Internal Server Error (Caught exception while handling request: javax.xml.rpc.JAXRPCException: Not authenticated user)+
    *:end fault message*</summary>
    +</part></bindingFault></fault></messages>+
    As said, no header information is visible in the Invoke activity.
    Please provide help for the above issue.
    -MJ

    Hello Patrick,
    Thanks for the response. I am using normal assign activity to assign values to the header variable as shown below. HeadMT is the header variable which is passed in the invoke activity.
    +<assign name="Assign_Header">+
    +<copy>+
    +<from expression="'tkl12'"/>+
    +<to query="/ns1:LOGIN_INFO/ns1:USER_NAME" variable="*HeadMT*"+
    part="payload"/>
    +</copy>+
    +<copy>+
    +<from expression="'tkl123'"/>+
    +<to query="/ns1:LOGIN_INFO/ns1:PASSWORD" variable="*HeadMT*"+
    part="payload"/>
    +</copy>+
    +<copy>+
    +<from expression="'TKL'"/>+
    +<to query="/ns1:LOGIN_INFO/ns1:CHANNEL_ID" variable="*HeadMT*"+
    part="payload"/>
    +</copy>+
    +</assign>+
    The expected input by the web service is as below with the header information highlighted.
    +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ws/webservices/RowWS/RowWS.wsdl">+
    +*<soap:Header>*+
    +*<ns1:LOGIN_INFO>*+
    +*<ns1:USERNAME>tkl12</ns1:USERNAME>*+
    +*<ns1:PASSWORD>tkl123</ns1:PASSWORD>*+
    +*<ns1:CHANNEL_ID>TKL</ns1:CHANNEL_ID>*+
    +*</ns1:LOGIN_INFO>*+
    +*</soap:Header>*+
    +<soap:Body>+
    +<ns1:substatusElement>+
    +<ns1:pInparam>+
    +<ns1:insubno>7674988</ns1:insubno>+
    +</ns1:pInparam>+
    +</ns1:substatusElement>+
    +</soap:Body>+
    +</soap:Envelope>+

  • Unable to add custom SOAP header to consumer webservice in CRM( without using PI)

    Hello Experts,
    We have a requirement to consume webservice proxy in CRM without involving PI. We have WSDL file which has many services as depicted in the first screenshot.After checking old posts, I could add custom SOAP header by using if_wsprotocol_ws_header and there is no xml parsing error for ws_header.Have used if_ixml_stream_factory to check xml parsing error for header.
    '<soapenv:Header>'
    '<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">'
    '<wsse:UsernameToken wsu:Id="UsernameToken-2">'
                '<wsse:Username>user id</wsse:Username>'
                '<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">paswd</wsse:Password>'
                '<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">MT0B9XFzsZJXXKmVKOsj/Q==</wsse:Nonce>'
                '<wsu:Created>2015-03-30T06:29:17.407Z</wsu:Created>'
    '</wsse:UsernameToken>'
    '</wsse:Security>'
    '</soapenv:Header>' INTO l_string.
    But when my ABAP program as a whole gets executed where consumer proxy is called, then it still throws XML parsing error - undeclared namespace prefix. As mentioned, there is no parsing error for header and WSDL file as a whole in SOAP UI tool works fine,by manually adding SOAP header.
    Have configured SOAMANAGER with logical port.Or any wrong setting in SOAMANAGER can cause this issue? When I tested webservice ping, it gave me attached error but I read in a SAP note that such error can be ignored.
    I want to know if some more setting/coding is required if we manually add custom header to a payload? Is PI really required to implement this requirement? Payload mapping has to be done to add custom header and if that can be taken care by ABAP coding and how?
    Can you please help?
    BR,
    Nisha Verma

    Hello Experts,
    I have not found the solution yet.
    Can anyone provide some insight??
    BR,
    Nisha Verma

  • SOAP Header in SOAP Receiver adapter

    Hi All,
    I am doing a Proxy to  Webservice scenario where webservice requires the SOAP request as below.
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
        <SOAP-ENV:Header>
            <mh:CustomHeader xmlns:mh="http://schemas.test.com/customHeader">
                <mh:MessageData>
                    <mh:MessageId>12345</mh:MessageId>
                    <mh:Timestamp>2004-06-09T14:41:44Z</mh:Timestamp>
                </mh:MessageData>
            </mh:CustomHeader>
            <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext">
                <wsse:UsernameToken>
                    <wsse:Username>test</wsse:Username>
                    <wsse:Password>test123</wsse:Password>
                </wsse:UsernameToken>
            </wsse:Security>
        </SOAP-ENV:Header>
        <SOAP-ENV:Body>
        </SOAP-ENV:Body>
    Need your help to understand how can we achieve this using Standard SOAP adapter to customize the Header part as it requires to include "<mh:CustomHeader " & "UsernameToken".
    Or Do i need to go for adapter module development to create this SOAP request.
    Please provide your suggestion to achieve this scenario.
    Thanks & regards
    Ashwin
    Edited by: ashwin dhakne on May 17, 2010 5:32 PM

    Hi all,
    Created  a below target payload in a message mapping with  SOAP Header & Body part as per the requirement.
    In SOAP receiver communication channel, checked the option " Do Not Use SOAP Envelope".
    But while executing an sceanrio, i am facing  an error in SOAP receiver channel as Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 500 Internal Server Error
    And if i don't check the option " Do Not Use SOAP Envelope" it gives an error as
    Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: Unable to obtain service binding,error=Payload Envelope is not a known message for TestWebserviceService.
    Please provide your suggestions to handle this issue.
      <?xml version="1.0" encoding="UTF-8" ?>
    <ns1:Envelope xmlns:ns1="http://schemas.test.com/CustomrHeader">
    <ns1:Header>
    <ns1:CustomrHeader>
    <ns1:MessageData>
      <ns1:MessageId>Constant</ns1:MessageId>
      <ns1:Timestamp>Constant</ns1:Timestamp>
      </ns1:MessageData>
    <ns1:Security>
    <ns1:UsernameToken>
      <ns1:Username>Constant</ns1:Username>
      <ns1:Password>Constant</ns1:Password>
      </ns1:UsernameToken>
      </ns1:Security>
      </ns1:CustomrHeader>
      </ns1:Header>
    <ns1:Body>
    <ns1:Details>
    <ns1:Information>
      <ns1:Title>Test</ns1:JobTitle>
      </ns1:Information>
    <ns1:Contacts>
      <ns1:Street>Test Drive</ns1:Street />
      </ns1:Contacts>
      </ns1:Details>
      </ns1:Body>
      </ns1:Envelope>
    Thanks
    Ashwin
    Edited by: ashwin dhakne on May 18, 2010 5:47 PM
    Edited by: ashwin dhakne on May 18, 2010 5:48 PM
    Edited by: ashwin dhakne on May 18, 2010 5:48 PM

  • Query reg adding custom tags in SOAP Header - AXIS Receiver Adapter

    Hi All,
    I need to send custom tags as mentioned below to my traget webservice application. I think I can do this with Receiver AXIS adapter but not sure how it can be done. Can any of you suggest?
                                                  <WSContext>
                   <FromAppId>ABC</FromAppId>
                   <ToAppId>XYZ</ToAppId>
              </WSContext>
    Thanks,

    If you want to add custom tags in the soap header, one possible solution is use XSLT mapping or Java mapping to create header first then do message mapping for mapping the payload structure between your source and target  as usual.
    So in operation mapping you sequence mapping like this... first XSLT mapping for custom tags for the SOAP Header followed by payload mapping.
    Hope that helps.
    Search SDN for XSLT Mapping for soap header. Already we have handled these issues.

  • Accessing XI SOAP Header in Mapping

    We want to access the SOAP envelope information in the XI mapping.  We need to query some values based on the following XPath:
    /SOAP:Envelope/SOAP:Header/SAP:HopList/SAP:Hop/SAP:Engine
    Is there a way to access the XI SOAP Header?  Can we do this through a User defined function?  Another option we have is to get the Host name through Java.  But accessing the SOAP Header would probably add some more value - especially if we need to access other values.
    Based on the integration server value, we need to do different mapping for certain fields.  We can use Value Mapping.
    Thanks,
    Jay Malla
    Licensed To Code
    Genentech SAP XI Team

    Hello Jay,
    Did you solved your issue? I have the same problem and don't know how to find a solution.
    If you did, please contact me. My e-mail is [email protected]
    Regards

  • Consume web service in ABAP proxy with SOAP header

    Hi Thomas ,
    I am trying to consume web service in  ABAP . I have followed the procedure from one of your web blog <a href="/people/thomas.jung3/blog/2004/11/17/bsp-a-developers-journal-part-xiv--consuming-webservices-with-abap a Developer's Journal Part XIV - Consuming WebServices with ABAP</a> . (640 release).
    I need to pass SOAP header along with SOAP body. As you mentioned I have used if_wsprotocol_ws_header interface to pass header but it is still failing.
    Please see below code and please give some direction to fix the issue.
    1.Create ABAP proxy for WSDL (http://ws.strikeiron.com/SwanandMokashi/StockQuotes?WSDL). It has created structures only for SOAP body.
    2.Create Logical port
    3.Create following program to call proxy
    REPORT  zproxy.
    DATA: ref_stock TYPE REF TO zzco_stock_quotes_soap ,
          ws_header TYPE REF TO if_wsprotocol_ws_header,
          name TYPE string,
          namespace TYPE string.
    TRY.
        CREATE OBJECT ref_stock
      get WS_HEADER protocol
        ws_header ?= ref_stock->get_protocol('IF_WSPROTOCOL_WS_HEADER').
      set somehow header as iXML-DOM tree
        DATA: ixml TYPE REF TO if_ixml,
              xml_document TYPE REF TO if_ixml_document,
              xml_root TYPE REF TO if_ixml_element,
              xml_element TYPE REF TO if_ixml_element,
              xml_node TYPE REF TO if_ixml_node.
        DATA l_xstring        TYPE xstring.
        DATA l_string         TYPE string.
        FIELD-SYMBOLS <fs_xstring> TYPE xstring.
      Additional Header:
        CONCATENATE
    '<soap:Header>'
    '<s1:LicenseInfo xmlns:s1="http://ws.strikeiron.com">'
    '<s1:RegisteredUser>'
    '<s1:UserID>[email protected]</s1:UserID>'
    '<s1:Password>aaaaaaaa</s1:Password>'
    '</s1:RegisteredUser></s1:LicenseInfo>'
    '</soap:Header>' INTO l_string.
      convert to xstring
        l_xstring = cl_proxy_service=>cstring2xstring( l_string ).
        IF NOT l_string IS INITIAL.
        create iXML DOM document from XML xstring
          CALL FUNCTION 'SDIXML_XML_TO_DOM'
            EXPORTING
              xml           = l_xstring
            IMPORTING
              document      = xml_document
            EXCEPTIONS
              invalid_input = 1
              OTHERS        = 2.
          IF sy-subrc = 0 AND NOT xml_document IS INITIAL.
            xml_root = xml_document->get_root_element( ).
            xml_element ?= xml_root->get_first_child( ).
          add header element by element to SOAP header
            WHILE NOT xml_element IS INITIAL.
              name = xml_element->get_name( ).
              namespace = 'http://swanandmokashi.com' . "xml_element->get_namespace_uri( ).
              IF NOT xml_element IS INITIAL.
              ENDIF.
              ws_header->set_request_header(
                          name = name
                          namespace = namespace
                          dom = xml_element ).
              xml_element ?= xml_element->get_next( ).
            ENDWHILE.
          ENDIF.
        ENDIF.
      CATCH cx_ai_system_fault .
    ENDTRY.
    *Call soap body using abap proxy class.
    DATA: get_quotes TYPE zzget_quotes_soap_out .
    DATA: get_quotes1 TYPE zzget_quotes_soap_in .
    get_quotes1-quote_ticker = 'GE'.
    TRY.
        CALL METHOD ref_stock->get_stock_quotes
          EXPORTING
            get_quotes1 = get_quotes1
          IMPORTING
            get_quotes  = get_quotes.
      CATCH cx_ai_system_fault .
      CATCH cx_ai_application_fault .
    ENDTRY.
    4.It is throwing cx_ai_system_fault error.
    SOAP details:
    Input:
    <?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:s="http://www.w3.org/2001/XMLSchema" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding" >
    <soap:Header>
    <s1:LicenseInfo xmlns:s1="http://ws.strikeiron.com">
    <s1:RegisteredUser>
    <s1:UserID>[email protected]</s1:UserID>
    <s1:Password>aaaaaaaa</s1:Password>
    </s1:RegisteredUser>
    </s1:LicenseInfo>
    </soap:Header>
    <soap:Body>
    <tns:GetQuotes xmlns:tns="http://swanandmokashi.com">
    <tns:QuoteTicker>GE</tns:QuoteTicker>
    </tns:GetQuotes>
    </soap:Body>
    </soap:Envelope>
    Thanks,
    Kavitha.

    Hi ,
    Thank you for the response. Did you passed user email and password ([email protected] /aaaaaaaa) part of licenseinfo->resisteredUser along with Quoteticker GE in analyzer?
    <a href="http://www.strikeiron.com/Analyzer/OnlineAnalyzer.aspx?WSDL=http://ws.strikeiron.com/SwanandMokashi/StockQuotes?WSDL">ANALYZER</a>
    Thanks,
    Kavitha.

  • Split-Join, unable to set SOAP:HEADER in OSB at Invoke Service Component.

    Hi Experts,
        i created a Split-join for parallel processing and invoke third party services, but this service requires some mandatory elements in soap:header like WS-Addressing and, WSA-TO and some security infomation, but i don't know  how to pass header in invoke service step. Please help me to setup Header for Invoke services in split join.
    Please help me to resolve this issue.
    Thanks
    Ankit

    see this :https://forums.oracle.com/thread/951618
    not the most fancy way, but you can create some sort of  wrapper proxyservice in front of your business service to make it work

  • How do pass the UserID and Password in the SOAP header for web services

    I am encountering issues trying to pass the userid and password in the SOAP header when consuming a 3rd party web service.  Rostewitz posted something similiar but I don't know how to type iv_xml.  Any help would be greatly appreciated.
    Thank you,
    jpina

    It helps to post a link to a thread when you refer to it.  If you are trying to implement that solution though, you can look at the parameter of the corresponding method being called.  The parameter has type 'SIMPLE' which means that it is compatible with all of the predefined elementary ABAP types.  In this case, you should use 'STRING'.

  • How to set wsse:security SOAP header in soa 11g?

    Hi,
    we are facing an issue with invoking a secured webservice.
    we tried 3 things
    1.) set the username/password in em under reference properties
    2.) Created a schema, set the username/password and included it in partner link header tab.
    3.) added a client token policy in em and then set http authentication field.
    all these not working.
    the error we are facing is :
    Non Recoverable System Fault :
    javax.xml.ws.soap.SOAPFaultException: Missing <wsse:Security> in SOAP Header
    complete payload is below:
    <bpelFault>
    <faultType>0</faultType>
    <remoteFault>
    <part name="summary">
    <summary>Missing <wsse:Security> in SOAP Header</summary>
    </part>
    <part name="detail">
    <detail>javax.xml.ws.soap.SOAPFaultException: Missing <wsse:Security> in SOAP Header</detail>
    </part>
    <part name="code">
    <code>wsse:InvalidSecurity</code>
    </part>
    </remoteFault>
    </bpelFault>
    Please let us know how to proceed with this?
    Thanks in advance
    Regards

    You need to attach the below policy in security section (Select your partnerlink in the references section of composite.xml and the click on "Configure WS policies")
    oracle/wss_username_token_client_policy
    if it is Secured Webservice, then attach this policy
    oracle/wss_username_token_over_ssl_client_policy
    After attaching policy, click edit and configure the key(out of box, u see one key csf-key) . This key should be setup with the required username and password that matches with the Webservice expected username and pwd.
    Thanks,
    Satish
    http://soadiscovery.blogspot.com

  • How to add empty soap header?

    Hello,
    I created a web service proxy using WSDL and XSD files. Then, I created a sample request from client interface and sent the request as an object to call the web services. However, I am not directly calling the webservices as I am doing it through a Gateway. Here, the problem is, the Gateway accepts only empty SOAP headers and the Gateway inserts the security details in that SOAP header and will send a request to the original web services. Even if we add any element in the SOAP header, it is not accepting the request.
    While sending a request through the client interface(Java class), I am not able to generate a empty SOAP header and send as request. I tried several ways adding a empty header. but no result. Is there any way we can add empty SOAP header while sending a requesting through Java class(Client interface)?
    Thanks
    sekhar

    Thanks for your reply.
    I have tried different approaches for adding empty SOAP header with no elements. But, none of them worked. The only solution for this issue is to add OSB proxy which has the functionality to send empty SOAP header which worked for me.
    Thanks
    sekhar

  • Adding WS Security in SOAP header for calling soap services from PI

    When i am calling a wss enabled webservice from soapui with the header parameters
    Username , Password and Password Type - PasswordText , it is able to get results. The soapui tool automatically adds the following in the soap header -
         <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
             <wsse:UsernameToken wsu:Id="UsernameToken-9368150" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                <wsse:Username>xxxxx</wsse:Username>
                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">xxxxx</wsse:Password>
                <wsse:Nonce>aOA1P6t2hJPRyuraQ/IliQ==</wsse:Nonce>
                <wsu:Created>2009-07-10T14:58:33.781Z</wsu:Created>
             </wsse:UsernameToken>
          </wsse:Security>
    However , in PI when the following configurations are made -
    Web Services Security option selected in soap receiver adapter
    In Receiver Agrrement -
    Security Standard -  http://docs.oasis ....
    Security Procedure (Request) - None
    Security Procedure (response) - None
    the user tokens don't seem to generated and it is giving an authentication error . Is there any process of generating this in the outgoing soap header from PI.
    SOAP Axis framework is not installed at present  and working on PI 7.1 SP6.
    Looking forward for your replies

    same issue for me too.
    Try using WS adapter on receiver side .
    If you are able to attach SOAP header with WSSE fields using SOAP adapter at reciever channel let me know how you did it.

  • SOAP BODY data to be Put into SOAP Header

    Hi All,
    Could you kindly help me out in this issue?
    Basically our Requirement is to send the UserID and Password stored in
    the R/3 system to the 3rd Party Server as a part of the SOAP Header .
    Presently I am using a Message Interface which takes the parameters
    UserID and Password and hence its placing them in the SOAP BODY which in
    turn in resulting in Rejection of the data sent being us. So I guess we
    have to do some take out these parameters from Message Interface and
    try out something else.
    So Could you help us out in this issue since we are stuck  and hence not
    able to proceed any further.
    Here are some Details :
    Here is the extract from the XML File:
    A) Format in XI
      <?xml version="1.0" encoding="UTF-8" ?>
    - <ns1:DPSrequestToken xmlns:ns1="http://tempuri.org/message/">
    - <Username>
      <Username>ANYAGENT</Username>
      <Password>p2ssword</Password>
      </Username>
    - <DPSrequestToken>
      <version>1</version>
      <vendorID>0142</vendorID>
      </DPSrequestToken>
      </ns1:DPSrequestToken>
    B) The way the file needs to be sent to the 3rd party server
    <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">
         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:Header>
            <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
                <wsse:UsernameToken>
                    <wsse:Username>ANYAGENT</wsse:Username>
                    <wsse:Password>p2ssword</wsse:Password>
                </wsse:UsernameToken>
            </wsse:Security>
    </SOAP-ENV:Header>
         <SOAP-ENV:Body>
              <m:DPSrequestToken xmlns:m="https://tpvs.hmrc.gov.uk/dpsauthentication">
                   <m:version>1</m:version>
                   <m:vendorID>your 4 digit vendorID</m:vendorID>
              </m:DPSrequestToken>
         </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Basically as mentioned above
      <Username>ANYAGENT</Username>
      <Password>p2ssword</Password> ,Tokens should be sent in the SOAP
    Header which is now being sent in the Body and hence causing problems.
    Do get back to me in case you need any clarifications on this issue.
    Best Regards,
    Chandan
    Message was edited by: Chandan A C

    see this --> page 2
    HTTP Adapter error.
    Rgds

  • Generating Web Service with SOAP Header

    Hello,
    I have a WSDL for a web Service using document encoding and with a soap header.
    I generate a jws file using WL Workshop 81.SP4 but I always have this error message :
    ERROR: AjoutContactService.jws:13: The binding for AjoutContact does not declare one part.
    ERROR:      SUGGESTION: A document literal binding must have at most one part. Make sure you have a WSDL that declares just one part for each message with a document literal binding.
    The header is a recent adding on an existing Web Service, and I can't change the wsdl definition. I also need to use data contained by the header in conjunction with data in the body.
    Is it a limitation with workshop or a problem with with my binding file ?
    I give sample of my two wsdl files.
    Given wsdl file
         <wsdl:message name="inputAjoutContact">
              <wsdl:part name="body" element="xsdin:NouveauContact"/>
    <wsdl:part name="header" element="xsdinhead:EnTeteRequete"/>          
         </wsdl:message>
         <wsdl:message name="outputAjoutContact">
              <wsdl:part name="body" element="xsdout:StatutAjoutContact"/>
         </wsdl:message>
         <wsdl:message name="faultAjoutContact">
              <wsdl:part name="body" element="xsdfault:Exception"/>
         </wsdl:message>
         <wsdl:portType name="AjoutContactPortType">
              <wsdl:operation name="AjoutContact">
                   <wsdl:input name="ParametresEntree" message="tns:inputAjoutContact"/>
                   <wsdl:output name="ParametresSortie" message="tns:outputAjoutContact"/>
                   <wsdl:fault name="ParametresException" message="tns:faultAjoutContact"/>
              </wsdl:operation>
         </wsdl:portType>
    binding file
              <wsdl:operation name="AjoutContact">
                   <soap:operation soapAction="urn:#AjoutContact"/>
                   <input>
    <soap:header part="header" use="literal"/>
    <soap:body parts="body" use="literal"/>
                   </input>
                   <output>
                        <soap:body use="literal"/>
                   </output>
    <fault name="ParametresException">
    <soap:fault use="literal" name="ParametresException" />
    </fault>
         </wsdl:operation>

    Hi,
    This appears to be a known limitation and is addressed by CR227689
    which has a workaround that needs the wsdl to be modified.
    I am not sure if this is possible given that we don't control the wsdl most times.
    Could you please open a BEA support case and refer to CR227689?
    Vimala-
    p.s:
    I found some info on the issue which could help:
    1) Refer to <http://lists.oasis-open.org/archives/regrep/200306/msg00071.html>
    you will see that only one part is allowed in the message part for doc/literal webservices Snippet from the above link
    "Also, keep in mind that WS-I BP permits only one <part> on document/literal messages, so to be WS-I compliant, you would have to include it in the message structure. "
    2) Refer to http://www.ws-i.org/Profiles/Basic/2003-08/BasicProfile-1.0a.html#refinement35722968 <http://www.ws-i.org/Profiles/Basic/2003-08/BasicProfile-1.0a.html>
    below R2208)
    "For document-literal bindings, the Profile requires that at most one part, abstractly defined with the element attribute, be serialized into the soap:Body element."
    This implies Soap body contains message which contains a at most one part.

Maybe you are looking for