Calling RPC/Encoded WebService

Hi Experts,
is there a possibility to call an RPC/encoded webservice?
We have configured the SOAP adapter but it only sends Document/literal SOAP messages.
XI creates the following message:
<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>        
        <ns0:SoapIn xmlns:ns0="urn:test">
                <userName>user</userName>
                <password>pass</password>
        </ns0:SoapIn>
        </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
What we need is:
<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>        
        <ns0:SoapIn xmlns:ns0="urn:test">
                <userName <b>xsi:type="xsd:string"</b>>user</userName>
                <password  <b>xsi:type="xsd:string"</b>>pass</password>
        </ns0:SoapIn>
        </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Any ideas are welcome!
Thanks for your help,
Holger

Hi,
I have for some occasions when I have had a need for "non-standard" SOAP messages used the Plain HTTP adapter and an additional XSLT mapping to create the necessary SOAP tags. Ex. I have used this for adding SOAP-Header tags etc, but I guess you might try this for your needs also. I just created the extra XSLT mapping which takes care of the SOAP wrapping and place that as a second mapping step in the interface mapping.
Kind regards Johan Göthberg

Similar Messages

  • RPC encoded webservices

    Hi Experts,
    I have to call 3 different platform RPC encoded webservices from EP. Is it possible?
    Thanks & Regards
    Sara

    Hi Experts,
    I have to call 3 different platform RPC encoded webservices from EP. Is it possible?
    Thanks & Regards
    Sara

  • What is the general way to invoke a rpc/encoded webservice?

    Hi,
    I have some confusion in invoking webservices, ok, let me explain my question in detail:
    Usually, we access a web service througt its wsdl file, for a rpc/encoded style, for example, in Axis enviroment, I will need the java object for the complex message types, how can I get these java files? If I use the Sun provided WSDP tool to compile the wsdl file and get these java files, do they work? If I am not in the Axis enviroment, maybe I will compose the SOAP request directly, so, what is the general way?
    Thanks.

    Hello,
    When you want to invoke a Web Services (RPC or Document style) you generally as you said create a set fo Java class to: map the messages information to Java code, and create a proxy/stub to do the call.
    Using Oracle Application Server Web Service framework you have several way of creating this client classes:
    - using Oracle JDeveloper just do a File>New>Web Services>Web Service Proxy
    - using the command line tool, and associated Ant tasks (WSA:Web Service Assembler), see the Web Services Developer Guide
    Regards
    Tugdual Grall

  • RPC/encoded style webservice

    Hi Experts,
    How to expose RPC/encoded style webservices from XI? As far as I know, we can expose Document literal style webservice from PI7.0.
    Could you please tell me, for this question where I can get the exact answer?
    Regards
    Sara

    Hi,
    please go through below links
    Using XML-RPC in NetWeaver
    /people/sap.user72/blog/2004/09/23/using-xml-rpc-in-netweaver
    External Data Loads for CRM 4.0 using XIF adapter
    /people/stephen.johannes/blog/2005/08/18/external-data-loads-for-crm-40-using-xif-adapter
    XML-RPC protocol and XIF Adapter
    XML-RPC protocol and XIF Adapter
    Thanks
    Swarup

  • J2ME + message style "rpc/encoding"

    Hi,
    I have a web services with message style "rpc/encoded" and i need consume this web service from a J2ME app. I wrote in the J2ME help that is impossible because it supports the "document/literal" style. How can i call this methods? Is it possible?
    Thanks.
    Bruno

    Rajesh -
    Thanks, that is what I was looking for. Do you know if the sample client
    code follows JAX-RPC? Or is this special API developed for Workshop web
    services?
    Thanks,
    Pat
    "Rajesh Mirchandani" <[email protected]> wrote in message
    news:[email protected]..
    If you look into the test view you will find a link for a java proxy(click the
    "overview" tab and the the "Java Proxy" tab.). If you copy and paste thatcode
    into a java client or a servlet you should be able to invoke the webservice.
    >
    Let me know if you need an example.
    Pat Regan wrote:
    It seems to me that, under the hood, a session bean is always the first
    component called in a Workshop created web service. If this is the
    case,
    then would a Java client always use the JAX-RPC api to call it? Evenfor an
    asynchronous web service? Does anyone have an example Java Client that
    invokes a Workshop created web service?
    Thanks,
    Pat--
    Rajesh Mirchandani
    Developer Relations Engineer
    BEA Support

  • Can SAP handle RPC/encoded WSDLs

    I am not sure whether this is the right forum for this question, but i'll give it a try:
    I have a WSDL file (web service decription) from a 3rd party tool, which is RPC/encoded, and I tried to generated an ABAP proxy class (SAP Basis 7.01). During the generation I get a couple of different errors, and the one that bothers me most is
    "incorrect value for attribute use: "encoded"".
    When I replace all occurrences of "use="encoded"" with "use="literal"", then the proxy generation will work, but in this case, the web service call will not work anymore (probably because the encoded response from the webservice cannot be read by the proxy class).
    What can I do?
    Any hints are welcome.

    Hi,
    It seems only RPC with literal will be supported in future.
    Quote from wiki Please see this:
    "Some of these combinations are rarely used in practice, such as document/encoded. In general, the literal use is gaining importance, and as far as RPC/encoded is concerned, the Web Services Interoperability Organization (WS-I) in its Basic Profile Version 1.0a of August 2003 ruled out the use of SOAP encoding with web services. Document/literal and RPC/literal will be the only allowed style/use combinations in the future."
    Detail wiki is available here: http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/c018da90-0201-0010-ed85-d714ff7b7019
    Regards,
    Gourav
    Edited by: Gourav Khare on Oct 13, 2009 12:28 AM

  • Supports ORACLE PM RPC/encoded ?

    Hello !
    Is it possible, that the Process Manager can't handle RPC/encoded style ?
    Axis send multirefs, when RPC/encoded style is used by webservices ! The ORACLE PM can't handle multirefs. Is a webservice send a message to a BPEL process, deployed on a oracle PM, and the message from the webservice contains multirefs, the Oracle PM gives a fault like NullPointerException !
    Have anybody similar experiences ? Is it posible to configure the Oracle PM handle multiref or RPC/encoded style correct ?
    Thanks

    I have a bug logged against this issue, bug # is 5990259. However, the service I was calling is no longer available, so development can't reproduce it... If you gave them your example as well maybe they could progress this bug? Anyway BPEL does work with RPC/Encoded, it just doesn't like those multi refs. The company we were interacting with was using WebObjects, which was behaving exactly as in your example, and they changed an option on the web service to get rid of the multi refs and it worked (was still RPC/Encoded).

  • Dose javax.xml.rpc.encoding.XMLType has anything to represent void type

    Hi All,
    Is it possible to use XML types to represent a void(type).
    In other words, dose "javax.xml.rpc.encoding.XMLType" has anything to represent void type.
    Here is my code snippet...
    At the Service Endpoint i have a service
      public void invokeBatchProcess(String actType)
        throws   java.rmi.RemoteException; At the Web-Service Client side i'm invoking this webservice using DII.
    Not sure how to set the return type to Call object.
    Client Code:
    ServiceFactory serviceFactory = ServiceFactory.newInstance();
    //Service Name
    Service service = serviceFactory.createService(new QName(
              IConstants.DEFAULT_SERVICE_NAME));
    //Port Name
    QName port = new QName(IConstants.DEFAULT_SERVICE_PORT);
    Call serviceCall = service.createCall(port);
    serviceCall.setProperty(IConstants.URI_ENCODING_PROPERTY,IConstants.URI_ENCODING);
    serviceCall.setProperty(Call.SOAPACTION_USE_PROPERTY,new Boolean(true));
    //Target EndPoint
    serviceCall.setTargetEndpointAddress(IConstants.DEFAULT_URL);
    //OperationName
    serviceCall.setOperationName(new QName(IConstants.DEFAULT_SERVICE_OPERATION_NAME));
    serviceCall.addParameter(
    "arg1",new QName("http://schemas.xmlsoap.org/soap/encoding/","string"),
    ParameterMode.IN);
    //How to use XMLType to represent void ???
    serviceCall.setReturnType(????????) Greatly appreciate your help.
    Priya.Jlus
    IIMS-NewZealand.

    Hello-
    Sorry for the delay in responding.
    Given the following dii client you will not that the return parameter does not need to be set on the call object-
    The call is invoked in the normal way using the invoke method-
    the invokeOneWay method performs calls asynchonously and no soap message is returned to the client-
    The client below that has a void return parameter does
    deserialize a soap response message, but the message contains no data.
    public static void main(String[] args) {
    try {
    ServiceFactory factory =
    ServiceFactory.newInstance();
    Service service =
    factory.createService(new QName(BODY_NAMESPACE_VALUE,qnameService));
    QName port = new QName(BODY_NAMESPACE_VALUE, qnamePort);
    Call call = service.createCall(port);
    call.setTargetEndpointAddress(endpoint);
              call.setProperty(Call.SOAPACTION_USE_PROPERTY,
    new Boolean(true));
    call.setProperty(Call.SOAPACTION_URI_PROPERTY, "");
    call.setProperty(ENCODING_STYLE_PROPERTY, URI_ENCODING);
                   call.setProperty(Call.OPERATION_STYLE_PROPERTY, "rpc");
                        HelloClient client = new HelloClient();
                        client.sayHelloNoReturn(call);
    } catch (Exception ex) {
    ex.printStackTrace();
         void sayHelloNoReturn(Call call1) {
    try {
              call1.setOperationName(new QName(BODY_NAMESPACE_VALUE, "sayHelloVoid"));
              boolean b = call1.isParameterAndReturnSpecRequired(
         new QName(BODY_NAMESPACE_VALUE, "sayHelloVoid"));
                   if(true) {
                        //call1.setReturnType(new QName(NS_XSD, "string"),
                        //          java.lang.String.class);
                        call1.removeAllParameters();
                        call1.addParameter("String_1", new QName(NS_XSD,
                             "string"), java.lang.String.class, ParameterMode.IN);
                        Object[] params = { "foowho" };
                        call1.invoke(params);
    } catch (Exception e) {
         System.out.println("Caught exception: " + e.getMessage());
    e.printStackTrace();
    The following is the message that passes from the dii client to the service, and the service response-
    Request
    Content-Type: text/xml; charset="utf-8"
    Content-Length: 482
    SOAPAction: ""
    <?xml version="1.0" encoding="UTF-8"?>
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><env:Body><ans1:sayHelloVoid xmlns:ans1="http://hello.org/wsdl"><String_1 xsi:type="xsd:string">foowho</String_1></ans1:sayHelloVoid></env:Body></env:Envelope>
    Response
    Http Status Code: 200
    Content-Type: text/xml; charset="utf-8"
    Content-Length: 482
    SOAPAction: ""
    <?xml version="1.0" encoding="UTF-8"?>
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://hello.org/types" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><env:Body><ans1:sayHelloVoidResponse xmlns:ans1="http://hello.org/wsdl"/></env:Body></env:Envelope>******************
    The wsdl is as follows:
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions name="HelloService" targetNamespace="http://hello.org/wsdl" xmlns:tns="http://hello.org/wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
    <types/>
    <message name="HelloIF_sayHello">
    <part name="String_1" type="xsd:string"/></message>
    <message name="HelloIF_sayHelloResponse">
    <part name="result" type="xsd:string"/></message>
    <message name="HelloIF_sayHelloVoid">
    <part name="String_1" type="xsd:string"/></message>
    <message name="HelloIF_sayHelloVoidResponse"/>
    <message name="HelloIF_sayHelloVoid2">
    <part name="String_1" type="xsd:string"/>
    <part name="int_2" type="xsd:int"/></message>
    <message name="HelloIF_sayHelloVoid2Response"/>
    <portType name="HelloIF">
    <operation name="sayHello" parameterOrder="String_1">
    <input message="tns:HelloIF_sayHello"/>
    <output message="tns:HelloIF_sayHelloResponse"/></operation>
    <operation name="sayHelloVoid" parameterOrder="String_1">
    <input message="tns:HelloIF_sayHelloVoid"/>
    <output message="tns:HelloIF_sayHelloVoidResponse"/></operation>
    <operation name="sayHelloVoid2" parameterOrder="String_1 int_2">
    <input message="tns:HelloIF_sayHelloVoid2"/>
    <output message="tns:HelloIF_sayHelloVoid2Response"/></operation></portType>
    <binding name="HelloIFBinding" type="tns:HelloIF">
    <operation name="sayHello">
    <input>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://hello.org/wsdl"/></input>
    <output>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://hello.org/wsdl"/></output>
    <soap:operation soapAction=""/></operation>
    <operation name="sayHelloVoid">
    <input>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://hello.org/wsdl"/></input>
    <output>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://hello.org/wsdl"/></output>
    <soap:operation soapAction=""/></operation>
    <operation name="sayHelloVoid2">
    <input>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://hello.org/wsdl"/></input>
    <output>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://hello.org/wsdl"/></output>
    <soap:operation soapAction=""/></operation>
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/></binding>
    <service name="HelloService">
    <port name="HelloIFPort" binding="tns:HelloIFBinding">
    <soap:address location="REPLACE_WITH_ACTUAL_URL"/></port></service></definitions>
    I hope this has been helpful and thank you for
    using jaxrpc

  • How to handle rpc/encoded style messages using BizTalk?

    I am integrating with a lot of services and one of our customers has a service with rpc/encoded style
    I could consume and generate schema from their wsdl file via BizTalk consume WCF wizard.
    Once I am trying to call the service with request message that generated from the schema, it is giving an error that can not desterilize the first element of the message. 
    No Deserializer found to deserialize a 'FieldName' using encoding style 'null'
    I compared the stub xml request message from SaopUI and I noticed that the xml expecting the data type with the element like this .
    <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsb="WSBanka">
    <soapenv:Header/>
    <soapenv:Body>
    <wsb:bnkBorcsorgulama soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <sozlesmeNo xsi:type="xsd:string">?</sozlesmeNo>
    <bankaKodu xsi:type="xsd:string">?</bankaKodu>
    <anahtar xsi:type="xsd:string">?</anahtar>
    </wsb:bnkBorcsorgulama>
    </soapenv:Body>
    </soapenv:Envelope>
    On the other hand, I got the request of the message from Fiddler using the BizTalk , and the generate xml of the BizTalk schema without the data type.
    <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsb="WSBanka">
    <soapenv:Header/>
    <soapenv:Body>
    <wsb:bnkBorcsorgulama>
    <sozlesmeNo>?</sozlesmeNo>
    <bankaKodu>?</bankaKodu>
    <anahtar>?</anahtar>
    </wsb:bnkBorcsorgulama>
    </soapenv:Body>
    </soapenv:Envelope>
    In SoapUi, if I remove a datatype from the message, I will get same error from the BizTalk request.
    I read some articles that rpc/encoded style are not supported but I am not sure and these articles are not clear.
    I also read that it was supported with Soap adapter but now it is deprecated.
    So, Is there any one has an experience in rpc/encoded style messages and how to handle these message in BizTalk or is there any work around to handle these messages?
    Your inputs really appreciate it.
    Thanks in advance,
    When you see answers and helpful posts, please click Vote As Helpful, Propose As Answer, and/or Mark As Answer

    Hi,
    Please refer to the document which might help you:
    #RPC/Encoded Style
    http://www.c-sharpcorner.com/UploadFile/martinkropp/DesigningInteroperableWebService11232005044847AM/DesigningInteroperableWebService.aspx

  • Problem with RPC/encoded WSDL

    I'm having trouble calling a web service that is based on an RPC-encoded WSDL. I've already made slight changes to the WSDL, so that I get a work-able message type for mapping purposes. These changes are based on <a href="http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html#refinement16556272"><b>soapenc:Array</b> recommendations in WSDL 1.1 Section 2.2</a> for declaration of array types.
    Here's a snippet of the WSDL:
    <wsdl:definitions ...> 
      <wsdl:types>   
        <schema ...>
          <complexType name="ArrayOf_tns1_ServiceOption">
            <complexContent>
              <restriction base="soapenc:Array">
                <attribute ref="soapenc:arrayType"
                  wsdl:arrayType="tns1:ServiceOption[]"
                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
              </restriction>
            </complexContent>
          </complexType>
        </schema>
        <schema ...>
          <complexType name="ServiceOption">
            <sequence>
              <element name="key" nillable="true"
                        type="xsd:string"/>
              <element name="value" nillable="true"
                        type="xsd:string"/>
            </sequence>
          </complexType>
        </schema>
      </wsdl:types>
    </wsdl:definitions>
    I've changed it to:
    <wsdl:definitions ...> 
      <wsdl:types>   
        <schema ...>
          <complexType name="ArrayOf_tns1_ServiceOption">
            <sequence>
              <element name="ServiceOption"
                        type="tns1:ServiceOption"
                        minOccurs="0" maxOccurs="unbounded"/>
            </sequence>
          </complexType>
        </schema>
        </schema>
        <schema ...>
          <complexType name="ServiceOption">
            <sequence>
              <element name="key" nillable="true"
                        type="xsd:string"/>
              <element name="value" nillable="true"
                        type="xsd:string"/>
            </sequence>
          </complexType>
        </schema>
      </wsdl:types>
    </wsdl:definitions>
    The above changes have allowed me to make message mappings. But the I still get an error when sending a request to the web service. It seems that it requires the <b>xsi:type</b> and <b>soapenc:arrayType</b> attributes for arrays.
    <b>How can I create these attributes? How does XI handle RPC-encoded WSDLs?</b> I haven't encountered these problems with document-literal WSDLs.
    Thanks in advance.

    Hi Lorenzo,
    the extended support of rpc-style does <b>not</b> include the support of soapenc:array. It just addresses the root of the message and its direct children (as discussed in the thread where I added this hint).
    In the documentation of External Definitions you can find a hint where to find a list of supported XSD/DTD/WSDL-features. However, also there you will find no hint on the fact that soapenc:array is not supported. The reason for this is, that soapenc:array is specified in none of these standards. It is some artifact that SOAP smuggled into XSD. For good reasons WS-I prohibits the use of this artifact.
    Hence, if you need support for argumentation I can only point out the WS-I document I already linked.
    Greetings
    Stephan

  • Issue when Converting RPC styled Webservice to Document Styled Webservice

    Hi All,
    My requirement is to create a Document style WS using Jdev10.1.2 and deploy it in the OAS server 10.1.2 which follows J2EE1.3 standards.
    since jdev10.1.2 does not have inherit option of developing Doc'Style WS,
    I created a RPC Styled Webservice using Jdeveloper10.1.2 and converted it into Document styled webservice by changing the WEB.xml file in the WS project.
    The link from which i learned the changes is given below
    http://radio-weblogs.com/0132036/2003/12/07.html
    PFB the changes made in my WEB.xml file.
    <servlet-class>oracle.j2ee.ws.StatelessJavaRPCWebService</servlet-class> to <servlet-class>oracle.j2ee.ws.StatelessJavaDocWebService</servlet-class>.
    I deployed the WS in the OAS10.1.2 server successfully.
    Now the ISSUE is when im invoking the webservice. It is failing with the following error.
    Error parsing the WSDL for this endpoint.
    javax.servlet.ServletException: WSDL Generation exception: Error: method HelloWorld -- cannot use document style binding when output requires encoding
    how to solve this error ?
    If any one came across this error.
    pls help.

    What does the registry key you installed ?
    If you want to get rid of the save dialog box, you can try to use the VBA code.
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Me.Close savechanges:=True    "close and save changes, don't ask".
    Me.Close savechanges:=False    "close and don't save changes, don't ask".
    End Sub
    Wind Zhang
    TechNet Community Support

  • Calling an existing webservice from ABAP ?

    I am trying to call an existing webservice from abap and cannot seem to get it right.
    We are on 640.
    What are the steps I need to follow ?
    The address of the test wsdl is http://obcbox:50000/EMWSApp/DCCGen?wsdl
    and http://obcbox:50000/wsnavigator/jsps/explorer.jsp?localWS=RU1XU0FwcC9zYXAuY29tJTJGRU1XU0FwcEVhci9FTVdTYXBwLmphcg%3D%3D
    I need to be able to send data to the dccGenerator so it can do its work.
    Any help would be greatly appreciated.
    Cheers Steve.

    The following code will call the web service and fill the data into internal table which was received from the Web service. This code will send & Receive the data from ABAP to Webservice.
    Change the Header detail as per your Webservice.
    REPORT  ZWORKORDER.
    * Author : Raja T
    * Company :******
    TYPES: BEGIN OF OUTTAB1 ,
      JOBCODE(20),
      COMPONENTCODE(20),
      ACCURATEHOURS(20),
      ACCURATECOST(20),
      LENGTH TYPE I,
       END OF OUTTAB1 .
    DATA: OUTTAB TYPE  TABLE OF OUTTAB1.
    DATA: TAB TYPE OUTTAB1.
    DATA: WF_O LIKE LINE OF OUTTAB .
    DATA: XSLT_ERR TYPE REF TO CX_XSLT_EXCEPTION .
    DATA: RLENGTH TYPE I,
          TXLEN TYPE STRING  .
    DATA: HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT .
    DATA: WF_STRING TYPE STRING .
    DATA: WF_STRING1 TYPE STRING .
    DATA: WF_PROXY TYPE STRING ,
          WF_PORT TYPE STRING .
    CLEAR WF_STRING .
    * Form the input string to send the Input Data to Web service.
    CONCATENATE
    '<?xml version="1.0" encoding="utf-8"?>'
    '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
    '  <soap:Body>'
    '    <GetWorkOrder xmlns="http://*******erica.net/webservices/">'
    '      <nWorkOrder>2</nWorkOrder>'
    '      <nDistributorCode>4871</nDistributorCode>'
    '      <model>HM400</model>'
    '     <type>1 </type>'
    '    </GetWorkOrder>'
    '  </soap:Body>'
    '</soap:Envelope>'
    INTO WF_STRING .
    CLEAR :RLENGTH , TXLEN .
    RLENGTH = STRLEN( WF_STRING ) .
    MOVE: RLENGTH TO TXLEN .
    CLEAR: WF_PROXY, WF_PORT .
    CALL METHOD CL_HTTP_CLIENT=>CREATE
      EXPORTING
        HOST    = '192.168.1.41' "'http://****merica.net/webservices'
        SERVICE = '8080'
        SCHEME  = '1'
      IMPORTING
        CLIENT  = HTTP_CLIENT.
    HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_DISABLED.
    CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
      EXPORTING
        NAME  = '~request_method'
        VALUE = 'POST'.
    CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
      EXPORTING
        NAME  = '~server_protocol'
        VALUE = 'HTTP/1.1'.
    CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
      EXPORTING
        NAME  = '~request_uri'
        VALUE = '/service/accurate/workorder.asmx?'.
    CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
      EXPORTING
        NAME  = 'Content-Type'
        VALUE = 'text/xml; charset=utf-8'.
    CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
      EXPORTING
        NAME  = 'Content-Length'
        VALUE = TXLEN.
    CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
      EXPORTING
        NAME  = 'SOAPAction'
        VALUE = 'http://********merica.net/webservices/GetWorkOrder'.
    CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
      EXPORTING
        DATA   = WF_STRING
        OFFSET = 0
        LENGTH = RLENGTH.
    * Send the Input Data to Web service.
    CALL METHOD HTTP_CLIENT->SEND
      EXCEPTIONS
        HTTP_COMMUNICATION_FAILURE = 1
        HTTP_INVALID_STATE         = 2.
    * Receive the Input from Web Serice.
    CALL METHOD HTTP_CLIENT->RECEIVE
      EXCEPTIONS
        HTTP_COMMUNICATION_FAILURE = 1
        HTTP_INVALID_STATE         = 2
        HTTP_PROCESSING_FAILED     = 3.
    CLEAR WF_STRING1 .
    WF_STRING1 = HTTP_CLIENT->RESPONSE->GET_CDATA( ).
    DATA: LENGTH TYPE I.
    LENGTH = STRLEN( WF_STRING1 ).
    DATA: VALUE_FIELD TYPE NAME_KOMP.
    DATA: VALUE TYPE REF TO DATA.
    FIELD-SYMBOLS: <FS_CONVERTED_DATA>.
    DATA: TAB1 TYPE TABLE OF STRING.
    DATA: FROM_LENGTH TYPE I VALUE 1.
    DATA: TO_LENGTH TYPE I.
    DATA: DIFF TYPE I.
    DATA: START TYPE I VALUE 1.
    DO.
    * JOBCODE.
      SEARCH WF_STRING1 FOR 'JobCode=' . "STARTING AT START .
      IF SY-SUBRC <> 0.
        EXIT.
      ENDIF.
      FROM_LENGTH = SY-FDPOS .
      FROM_LENGTH = FROM_LENGTH  + 8.
      SEARCH WF_STRING1 FOR 'JobDescription=' ."STARTING AT START ..
      TO_LENGTH = SY-FDPOS .
      DIFF = TO_LENGTH - FROM_LENGTH .
      MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-JOBCODE.
      TO_LENGTH = DIFF + TO_LENGTH.
      SHIFT WF_STRING1 BY TO_LENGTH PLACES.
    * COMPONENT CODE
      SEARCH WF_STRING1 FOR 'ComponentCode=' .
      IF SY-SUBRC <> 0.
        EXIT.
      ENDIF.
      FROM_LENGTH = SY-FDPOS .
      FROM_LENGTH = FROM_LENGTH  + 14.
      SEARCH WF_STRING1 FOR 'ComponentDescription=' .
      TO_LENGTH = SY-FDPOS .
      DIFF = TO_LENGTH - FROM_LENGTH .
      MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-COMPONENTCODE.
      TO_LENGTH = DIFF + TO_LENGTH.
      SHIFT WF_STRING1 BY TO_LENGTH PLACES.
    * AccurateHours
      SEARCH WF_STRING1 FOR 'AccurateHours=' .
      IF SY-SUBRC <> 0.
        EXIT.
      ENDIF.
      FROM_LENGTH = SY-FDPOS .
      FROM_LENGTH = FROM_LENGTH  + 14.
      SEARCH WF_STRING1 FOR 'AccurateCost='.
      TO_LENGTH = SY-FDPOS .
      DIFF = TO_LENGTH - FROM_LENGTH .
      MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-ACCURATEHOURS.
      TO_LENGTH = DIFF + TO_LENGTH.
    *  AccurateCost
      SEARCH WF_STRING1 FOR 'AccurateCost='.
      FROM_LENGTH =  SY-FDPOS.
      FROM_LENGTH =  FROM_LENGTH + 13.
      SEARCH WF_STRING1 FOR '/>'.
      TO_LENGTH = SY-FDPOS.
      DIFF = TO_LENGTH - FROM_LENGTH .
      MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-ACCURATECOST.
      TO_LENGTH = DIFF + TO_LENGTH.
      SHIFT WF_STRING1 BY TO_LENGTH PLACES.
      APPEND TAB TO OUTTAB.
    ENDDO.
    WRITE: (10) 'JOBCODE'.
    WRITE (20) 'COMPONENTCODE'.
    WRITE (30) 'ACCURATEHOURS'.
    WRITE (40) 'ACCURATECOST'.
    LOOP AT OUTTAB INTO TAB.
      WRITE:/ TAB-JOBCODE .
      WRITE (20) TAB-COMPONENTCODE.
      WRITE (30) TAB-ACCURATEHOURS.
      WRITE (40) TAB-ACCURATECOST.
    ENDLOOP .
    Message was edited by:
            Raja T

  • SOAP adapter and WS with rpc/encoded

    Hi All,
    Does anyone know if and how the SAP XI 3.0 SOAP Adapter supports WebServices which expects XML messages in rpc/encoded.
    Cheers,
    FRank

    Hi Frank,
    I have the same issue and I got a reply from OSS:
      This problem is caused by the diversification of the WSDL binding
    styles.
      A Web service is described by a WSDL document. A WSDL binding
    describes how the service is bound to a messaging protocol, particularly
    the SOAP messaging protocol. A WSDL SOAP binding can be either an RPC
    style binding or a document style binding. A SOAP binding can also have
    an encoded use or a literal use. This gives us four style/use models:
    - RPC/encoded
    - RPC/literal
    - document/encoded(It will probably disappear from future versions of
    WSDL.)
    - document/literal
      RPC styled web services have serious interoperability problems. This
    is the reason that the rpc style is not in the basic profile
    specification of the web interoperability and also it has been
    deprecated in the current soap specification. For these reason, the
    integration directory does not currently support the RPC style! I would
    suggest you to use other document style web service provider if possible
    . It's the best way to solve this problem. But if you persist in using
    this RPC web service provider, we still have a workaround solution:
    you need to convert your RPC wsdl to a document styled wsdl and import
    it to  the directory and if necessary, you need to add some mapping to
    solve some RPC interoperability problems.
      In your case,
    1. The WSDL file you used is RPC style.
    2. The XI SOAP adapter doesn't support the RPC style. It only sends the
    document/literal SOAP message which can't be understand by your web
    service provider.
      One of the significant differences between the SOAP message of RPC
    style and that of the document style: the operation name is contained in
    the RPC style SOAP message but not in the document's.
      However, you can't solve this problem by simply specify a method
    name. What you should do is convert your RPC wsdl to a document styled
    wsdl. RPC turns out to be a subset of document/literal. This
    means for any given RPC WSDL, you can create a completely
    equivalent document/literal WSDL that would describe the same wire
    messages. Here are the steps for doing this (mostly schema element
    declarations).
    Solution:
    For each RPC operation:
    1. For each part in the input and output messages of that operation,
    declare a type with the contents described in step 2.
    2. Declare an element with the name of the part, the type referenced by
    type=". The element form must be unqualified.
    3. Declare a global element with the operation name and the namespace
    from soap:body/@namespace in the binding. Make the type of this element
    the one defined in step 1 for the input message.
    4. Declare a global element with the operation name and the word
    Response appended to it and the namespace from soap:body/@namespace in
    the binding. Make the type of this element the one defined in step 1 for
    the output message.
    5. Change the input message to contain one part and reference the
    element you declared in step 3.
    6. Change the output message to contain one part and reference the
    element you declared in step 4.
    7. Change the style to document in the binding.
      After that, import the new WSDL file to the integration directory. You
    will find the "method name" appears in the document style SOAP message.
    But actually it's the name of the input element which is the same as
    the name of the operation. It's just a little trick.
    Cheers Stefan

  • How can I call a stateful webservice from a user-defined XPath function?

    I'm calling a stateful webservice from a BPEL process using a PartnerLink which implements Custom Header Handler classes to handle the session state, storing the cookie as a property of the PartnerLink.
    I'd also like to call this same stateful webservice, in the same session, from a user-defined XPath function enabling me to call this from an XSL Transformation.
    Is this in any way possible? Can I access the cookie and attach it to the webservice call made by the user-defined XPath function?

    Actually, as long as the servlet returns valid javascript, you can indeed "call it" from the client. It will initiate a request and return the result to the browser.
    This example uses Perl, but it could be easily modified to go to a servlet instead.
    Note that it is only supported in DOM browsers (IE6+/NN6+/etc)
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
    <html>
    <head>
    <title> Test server-side JS </title>
    </head>
    <body>
    <script type="text/javascript">
    function checkIt(variable, value)
    var newScript = "cgi-bin/validateJS.cgi?"+variable+"="+value;
    var body = document.getElementsByTagName('body').item(0)
    var scriptTag = document.getElementById('loadScript');
    if(scriptTag) body.removeChild(scriptTag);
    script = document.createElement('script');
    script.src = newScript;
         script.type = 'text/javascript';
         script.id = 'loadScript';
         body.appendChild(script)
    </script>
    <p>Test.</p>
    <form id="f1" action="">
    <input type="text" name="t1" id="t1" onChange="checkIt(this.name, this.value)">
    </body>
    </html>
    validateJS.cgi
    #!/opt/x11r6/bin/perl
    use CGI qw(:all);
    my @valArray = split(/=/,$ENV{QUERY_STRING});
    print "Content-type: text/javascript\n\n";
    # myPass is the password
    $myPass = "foobar";
    if ("$valArray[1]" eq "$myPass")
    print "alert(\"Success!!\")";
    else
    print "alert(\"Failure!!\")";

  • Calling A Secured webservice using Username and password in the Soap header

    I want to call a secured webservice.
    The Username and password should be sent with the payload in the SOAP Header
    as
    <wsse:Security S:mustunderstand="0" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <wsse:UsernameToken wsu:Id="SecurityToken-XXXXXXXXXXXXXXXXXXXXXXXXX" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsse:Username>uname</wsse:Username>
    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">pwd</wsse:Password>
    </wsse:UsernameToken>
    </wsse:Security>
    Can you please send me the steps?
    I tried with giving the username and password under Service Account.
    I tried to create a wspolicy under business service. But nothing works...
    Please help me at the earliest.
    Also please give me steps in sequence.

    Now i made sure that the endpoint is available!
    Now am getting this error:
    <soapenv:Fault>
    <faultcode>soapenv:Server</faultcode>
    <faultstring>BEA-380002: localhost1</faultstring>
    <detail>
    <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
    <con:errorCode>BEA-380002</con:errorCode>
    <con:reason>localhost1</con:reason>
    <con:location>
    <con:node>RouteNode1</con:node>
    <con:path>request-pipeline</con:path>
    </con:location>
    </con:fault>
    </detail>
    </soapenv:Fault>
    Also in the invocation trace i can observe the following things:
    Under Invocation Trace:-
    ========================
         Receiving request =====> Initial Message context
         ===============================================
         under added header:-
         ==================
         <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
         </soap:Header>
         under RouteNode1
    ================
         Route to "TargetMyService_BS"
    $header (request):-
    <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    </soap:Header>
    Under Message Context changes:-
    *===============================*
    I can find this element also:-
    con:security>
    *<con:doOutboundWss>false</con:doOutboundWss>*
    *</con:security>*
    eventhough we enabled ws security, how the above tag can be false?
    I think its getting failed to populate the header with the required login credentials.
    The other doubt i have is:-
    =================
    I have chosen the service account type is static...is this right?

Maybe you are looking for

  • Can I safely delete old libraries?

    I notice that I have a LOT of old Libraries, e.g. ITUNES Library 2005-9-12, etc. The older ones run from 3,000k+ to the newest at about 8,700k. Are these just old backups? Can I get rid of the earlier ones to free up disk space (I assume I'd keep the

  • Recurring document on transaction code F.14

    Hi All, I got problem with this user complaining on the recurring document when she try to execute on the above transaction code. At first she create few documents with success then when she try to do the next step, which is to create posting documen

  • Ultra 5 nvram replacement

    Hi, I've got a sun ultra 5 with a nvram depleted battery , device part no M48T59T-PC1D - i have sourced a relacement at RS which is a MT48T59Y-70MH1 - is this s a compatible replacement as the last few digits are different ?

  • Stuck in error 1621 when trying to restore my old iPhone 3GS..

    How to work around this error?

  • Where can i find garageband 1? I have an old iMac

    I have a old iMac and it will only run Garageband 1. Does anyone know where I can find it for sale or download? I'm kind of desperate.