Passing XML String via HTTP Sender

Hello everyone,
currently we try to find a solution on the following requirement - maybe you have useful advice for us:
8 different business documents can be sent via a web-interface to SAP XI via the http sender adapter. We already have a customized JCo Class that takes only one input parameter (containining the XML string of the business document).
I think the easiest way would be to receive the XML string from the web-interface and pass it directly on to the JCo-Class in a Java Mapping.
Is it possible to create a generic message type for all 8 types of XML documents that contains just one element holding the XML as string? By doing so we could use the same URL for all 8 different XML types and pass it directly on as input paramenter to the JCo Class.
Do you have any idea how to do this?
Thank you very much.

Does the HttpURLConnection conn send the string along with the headerYes.

Similar Messages

  • How do I read the XML string using Http response/request?

    When my HTTP POST action is perform, the action will return me a XML string as shown in the link, https://www.neteller.com/gateway/netdirectv4.cfm?amount=150.00&net_account=458415554241&secure_id=896365&bank_acct_num=6789&currency=USD&merchant_id=1234&merch_transid=1102&merch_account=john123&custom_1=test123&custom_2=test123&custom_3=test123&test=1
    The above XML string will be send back by one of the payment gateway.
    How do I retrieve all the attribute name and value from the XML string so that it can be stored in my database?
    The XML string will be as shown below:
    <?xml version="1.0" encoding="ISO-8859-1"?><netdirect version="4.0">
              <approval>yes</approval>
              <amount>150.00</amount>
              <trans_id>403070</trans_id>
              <error>none</error>
              <fee>4.35</fee>
              <time>{ts '2006-06-23 06:14:19'}</time>
              <firstname>Test</firstname>
              <lastname>Test</lastname>
              <email>[email protected]</email>
              <custom_1>test123</custom_1>
              <custom_2>test123</custom_2>
              <custom_3>test123</custom_3>
              <dafee>0.00</dafee>
              <client_currency>USD</client_currency>
              <client_amount>150.00</client_amount>
              <merchant_currency>USD</merchant_currency>
              <merchant_amount>150.00</merchant_amount>
              <fxrate>1.0</fxrate>
              </netdirect>

    How about parsing the XML? Check out JAXP.
    http://java.sun.com/webservices/jaxp/index.jsp

  • RuleSet returns the same xml string what I send from webdynpro project

    Hello,
    I made an webdynpro application which invokes the RuleSet in BRM project by calling invoke rulset method with 4 parameters e.g. Project name, ruleset name, xmlstring, and rule engine.
    I guess in project name, and ruelset there is no problem.
    xmlString made dynamically picking values from webdynpro UI elements. which is
    [<tns:Insurance xmlns:tns="http://www.example.org/Insurance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/Insurance BasePremiumCalculation.xsd ">
       <tns:Make>Audi</tns:Make>
       <tns:Model>1</tns:Model>
       <tns:TypeClass>19</tns:TypeClass>
       <tns:AreaCode>R9</tns:AreaCode>
       <tns:BasePremium></tns:BasePremium>
    </tns:Insurance>
    I need to get the premium by giving first 4 element of the above xml string.
    After calling the invokeRuleSet method returns the same xmlString as an output.
    Can any body help me??
    Regards,
    Naeem

    Hello!
    Can you tell me how you solved this problem? I have the same problem and i have no idea how to solve it.
    Thanks,
    Szilamer

  • Signing or securing XML sent via https

    Hi there,
    I have designed a form which uses Javascript to submit XML via https to a server.  The https provides the appropriate transport level security, but is there a way to sign or encrypt the xml sent using Javascript?
    Thanks!

    Hi Paul,
    Is there a way that I can sign the content for a single pdf?  I would just like to secure the submission of the XML using a single encryption method even though several different clients will use the pdf for submission purposes.
    Also, I have placed a normal button on the form and written Javascript on the click method of the button which validates the form (according to the business logic which I need to perform) and then, upon successful validation, submit the form using this command:
    event.target.submitForm({cURL
    : URL, cSubmitAs:"XML"});
    The submission works using Reader 8, but can I add a cert or some security mechanism into the submitForm method to help ensure the validity of the XML content?
    Thx.
    Roy

  • Send XML Message via HTTP and Receive Response

    Hello,
    We have a scenario where we need to update Currency Exchange Rates in R/3 via a 3rd party called Oanda.  I'd like to use XI for this Interface, if possible. 
    Basically, we need to send XML over HTTP.  Here's the URL and the XML we need to use for our POST (I'll need to perform the look-up for about 15 currency codes - I plan on using a BPM process to loop through each currency code specified in a flat file):
    http://www.oanda.com/cgi-bin/fxml/fxml?fxmlrequest=<CONVERT><CLIENT_ID>TestAccount1</CLIENT_ID><EXCH>USD</EXCH><EXPR>CAD</EXPR><DATE>03/25/2008</DATE></CONVERT>
    And the reponse looks like this:
    <RESPONSE>
      <EXPR>CAD</EXPR>
      <EXCH>USD</EXCH>
      <AMOUNT>1</AMOUNT>
      <NPRICES>1</NPRICES>
      <CONVERSION>
        <DATE>Mon, 24 Mar 2008 20:00:00 GMT</DATE>
        <ASK>1.0257</ASK>
        <BID>1.0251</BID>
      </CONVERSION>
    </RESPONSE>
    I plan on mapping each reponse to BAPI_EXCHRATE_CREATEMULTIPLE, using BPM.
    So my question is this:  Should I use the HTTP adapter for the out going POST to Oanda?  If so, would the HTTP adapter be consider the sender or the receiver?  Also, how would the XML message be automatically appended to the end of the URL (i.e., after the fxmlrequest parameter)?  I guess I'm a little confused on how to use the HTTP adapter...  Are there any blogs that discuss this type of scenario?
    Thanks,
    Matt

    Hi guys,
    I have few concerns for setting up this scenario.
    1). I have created a data type for request mapping, and teste the mapping.
    The output looks like below:
      <?xml version="1.0" encoding="UTF-8" ?>
      <ns1:MT_CONVERT xmlns:ns1="http://test.com/ExchngRate">
       <CONVERT>
         <CLIENT_ID>test</CLIENT_ID>
         <EXPR>CAD</EXPR>
         <EXCH>USD</EXCH>
         <DATE>10/21/2009</DATE>
         <AMOUNT>1</AMOUNT>
       </CONVERT>
      </ns1:MT_CONVERT>
    How to pass only
      <CONVERT>
         <CLIENT_ID>test</CLIENT_ID>
         <EXPR>CAD</EXPR>
         <EXCH>USD</EXCH>
         <DATE>10/21/2009</DATE>
         <AMOUNT>1</AMOUNT>
       </CONVERT>
    to the receiver HTTP adapter.
    2) I am using URL address in the receiver HTTP adapter.
    Target Host: www.oanda.com
    Path Prefix: cgi-bin/fxml/fxml?fxmlrequest=
    What is will be Service Number?
    Looking forward for you help. Your help is greatly appreciated.
    Thanks,
    Namadev
    Edited by: Namadev Chillal on Oct 21, 2009 5:35 PM

  • How to pass XML payload to HTTP POST Service.

    Hi All,
    I am calling a RestFul service using Http Post method.
    If the payload type is "url-encoded" then my directly assignment of values using assign activity is working fine.
    But when i change the payload type to "xml" , It's erroring out saying the value is not provided for the parameters..
    You can also try this using below details to reproduce the issue.
    Details:
    =====
    URL : http://api.geonames.org/postalCodeSearch
    Used HttpBinding as reference in composite.
    XSD :
    <?xml version= '1.0' encoding= 'UTF-8' ?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.org" targetNamespace="http://www.example.org"
    elementFormDefault="qualified">
    <xsd:element name="geonames">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="totalResultsCount" type="xsd:integer"/>
    <xsd:element name="code" maxOccurs="unbounded">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="postalcode" type="xsd:string"/>
    <xsd:element name="name" type="xsd:string"/>
    <xsd:element name="countryCode" type="xsd:string"/>
    <xsd:element name="lat" type="xsd:float"/>
    <xsd:element name="lng" type="xsd:float"/>
    <xsd:element name="adminCode1" type="xsd:string"/>
    <xsd:element name="adminName1" type="xsd:string"/>
    <xsd:element name="adminCode2" type="xsd:integer"/>
    <xsd:element name="adminName2" type="xsd:string"/>
    <xsd:element name="adminCode3" type="xsd:integer"/>
    <xsd:element name="adminName3" type="xsd:string"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    <xsd:element name="Input">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="postalcode" type="xsd:string"/>
    <xsd:element name="username" type="xsd:string"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    We need to send following input values to the service.
    postalcode = 90110
    username =siddhardha
    Can someone let me know how to make it work with XML payload.Looks like i am not constructing the XML payload correctly in assign.
    Please send me the sample to [email protected].
    Thanks in advance,
    Siddhardha.

    Sid,
    I am still trying the same, here we need to change the input type to mimeXml
    have a look at this link....
    https://blogs.oracle.com/reynolds/entry/oracle_http_adapter
    I am trying multiple ways, everytime i get the same below error...
    <messages>
    <Invoke1_Request-Response_InputVariable_2>
    <part name="Input">
    <Input>
    <postalcode>90110</postalcode>
    <username>siddhardha</username>
    </Input>
    </part>
    </Invoke1_Request-Response_InputVariable_2>
    <Invoke1_Request-Response_OutputVariable>
    <part name="geonames">
    <geonames>
    <status message="Please add a username to each call in order for geonames to be able to identify the calling application and count the credits usage." value="10"/>
    </geonames>
    </part>
    </Invoke1_Request-Response_OutputVariable>
    </messages>
    Thanks,
    N

  • Namespace in XML Payload for HTTP Sender

    Hello,
    I have just configured my snychronous HTTP <--> RFC Scenario. When I want to test it with some XML payload in the HTTP testing tool I get a mapping runtime exception.
    After some investigation using the test tab in the message mapping I realized that missing namespace in the XML payload caused the error. I tried to add manually a namespace to the XML and then it worked
    This is very strange I though that the namespace of the sender interface is automatically added to the XML payload?
    Do you have any information on this?

    Hi,
    U need to copy the payload from Message mapping test message tab and use that payload.
    or u can use the HTTP test client for testing the same.
    sample HTML code to create HTTP Client:
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/66dadc6e-0a01-0010-9ea9-bb6d8ca48cc8
    You can also use the Wfetch application by Microsift for the same..
    download the same from below link
    http://www.iisfaq.com/Default.aspx?tabid=2975
    Thnx
    Chirag

  • Xml string passed as parameter to xsql

    I am trying to pass xml string as parameter to xsql.But having problems with the < and > .I tried to escape
    those chars but but i am not getting desired output.Could you please suggest how to pass the xml string .
    <xsql:include-xsql href="order.xsql?neworder='{@neworder}'
    i trying to pass neworder parameter as xml string which contains data to update 2-3 table .

    u can't post a parameter valued by a xml string,because of the xml string must be
    has xml element with attributes. as follows:
    <row num="1">
    the "=" will make the web container got error
    when parsing http request parameters's name and value pair.
    solution:
    1. use "post" method submit your parameter
    2. use microsoft xml http compoment post your param as a parameter
    of it's "send" method, and set the request contentType header "text/xml"
    in xsql file:
    <xsql:set-page-param name="param1" xpath="/parameters/neworder"/>
    try it :->

  • Send xml with HTTP Sender

    How can I send a xml via HTTP Sender from a Visual Basic 6.0 application? Do I have to use an ActiveX Control to send the HTTP Request with the XML as payload?
    Thanks in advance,
    Ruben.

    Ruben,
    You need to create your interface objects in the integration repository and  setup your interfase using SOAP adapter in the integration directory.
    After that you'll need to publish a webservice using the integration builder objects that you have already created.
    Mount the WSDL into a web server and try to implement a webservice call into your VB  application to invoke the WS.
    read this blog:
    https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1442 [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken]
    i hope it helps you...
    BR,
    Gerardo.
    Plz reward points

  • Creating XML string to be pushed into a JMS queue

    Hello All
    I am trying to pass the following XML string into a sender obj, however, I am not sure how it is supposed to be done, with the right escape sequencing.
    message.setText("<rawData><Name="Mike"></Name><Value="200"></rawData>");
    Please guide me.
    Thanks,
    AJ

    Login User should have the Admin privilege, Otherwise it is not possible to post data manually into the JMS Queue.
    Log into weblogic Console > click on JMS Module > <select the JMSModule where the Queue resides : e.g SOAJMSModule> >Select the Queue > Monitoring > Check the Box > click on "Show Message" > New > Post the data in "Body" section.
    Or, you can create another BS in OSB, pointing to that JMS Queue(using Input.xsd) . then execute the BS using your Input.xml

  • Using ADFS authentication to perform SSO via HTTP GET request

    Hi,
    Can i authenticate users (those users are clients, at home) to a web application using ADFS without SAML tokens?
    The situation is that i want the clients to perform SSO to the website via a link they receive in their mailboxes. 
    I thought about a solution that combines JWT in a URL link that each user will get to his private mail. this link will contain the users' claim (such as ID Num, given from AD DS Server dedicated especially for them).
    Thus, the user will receive an email with a link that already contains a short period of time JWT to perform SSO to the webapp.
    Is it possible ? anybody heard about a similar solution ?

    Sandra
    Thanks for your message
    Here is the my requirment
    The basic flow of a Where 2 Get It REST API call is:
    1) create the required XML structure,
    2) URI encode it,
    3) make a HTTP GET request,
    4) then parse the return XML document.
    Currently i have some data in ABAP structure with 5 fields, i need to create XML from the those 5 fields,and needs to be URI
    encode it, and then needs to make a HTTP get request to connect Where to Get It REST API, finally it will return XML document via HTTP Get request , and then needs to convert the return XML to  ABAP structure for further processing .the above 4 points will be implemented in my report.
    Any  body could help on this

  • How to send XML via HTTPS in Servlet

    I am new to Java. I need to make a servlet which can send a message via HTTPS with a content type of XML to another web server when it is called. each msg is proceeded with a header in the following format:
    requestID=rid&userID=uid&password=mypd
    and a detail information in XML:
    <S_Request>
    <requestControllID>1-rf200</requestControlID>
    <zipCode>99012</zipCode>
    <orderQuantity>35</orderQuantity>
    </S_Request>
    I have basic idea of how to send an http post with parameter string by using the Redirect function but don't know how to deal with the XML detail. Any one has idea about this? Any help will be greatly appreciated!

    This is what I did for one of my projects;
    String myXML = "all the xml tags and fields";
    URL url = new URL("https://www.somesite.com");
    HttpsURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoOutput(true);
    OutputStream outXML = connection.getOutputStream();
    outXML.write(myXML.getBytes());
    I think you can add the requestID and all to the begining of the string myXML
    Good luck
    Rajesh

  • HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7

    All -
    I'm new to consuming web services in JDeveloper. I'm using Oracle JDEV 10.1.3.3/OC4J.  I'm using this version since it is compatible with Oracle EBS 12.1.3.  My intent is to pull data from our third party recruitment app (Success Factors) and load that data into Oracle HRIS.  I'm already doing this through a .NET application.  I'm converting it to be a Java Concurrent Program in EBS.  The code listed below is a stub call to verify I'm on the right track. I created a JDeveloper Web Services proxy project.  I'm testing it locally on my windows desktop.  When I'm able to consume the service successfully, then I'll think about moving it to the EBS server.
    I'm getting the following error when I invoke the following service:
    HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
    End point is: https://api4.successfactors.com/sfapi/v1/soap?wsdl
    Any help/assistance would be much appreciated. 
    Below is my code and output of my test:
    package emsc.oracle.apps.emscper.sfapi.proxy;
    import HTTPClient.HTTPConnection;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.IsValidSession;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.IsValidSessionResponse;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Login;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LoginResponse;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LoginResult;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Logout;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LogoutResponse;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.SFCredential;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.SFParameter;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Error;
    import java.io.File;
    import javax.xml.rpc.ServiceFactory;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Date;
    import javax.xml.ws.BindingProvider;
    import javax.xml.soap.SOAPException;
    import java.util.Map;
    import oracle.security.ssl.OracleSSLCredential;
    public class SFAPITest {
        // Declare members:      
        private String companyId;
        private String userName;
        private String password;
        private String developerKey;
        private Date   effDt;
        private String greaterThanEffDt;
        private String lessThanEffDt;
        // Declare constants:      
        final static private String breakLine = "+---------------------------------------------------------------------------+";
        final static private String format    = "yyyy-mm-dd";      
        private enum ReqId {
            PrimaryReq(25),
            PrimaryReqCEO(26),
            EmCarePrimary(27),
            RTI(28),
            EmCareClinical(29);
            private int reqId; 
            private ReqId() {
            private ReqId(int value) {
                reqId = value;
            public int getReqId() {
                return reqId;
        // Getters and Setters:  
        protected String getCompanyId() {
           return this.companyId;
        protected void setCompanyId(String value) {
           this.companyId = value;                 
        protected String getUserName() {
           return this.userName;
        protected void setUserName(String value) {
           this.userName = value;                 
        protected String getPassword() {
           return this.password;
        protected void setPassword(String value) {
           this.password = value;                 
        protected String getDeveloperKey() {
           return this.developerKey;
        protected void setDeveloperKey(String value) {
           this.developerKey = value;                 
        protected Date getEffDt() {
            return this.effDt;
        protected void setEffDt(Date value) {
            this.effDt = value;                 
        protected String getGreaterThanEffDt() {
           return this.greaterThanEffDt;
        protected void setGreaterThanEffDt(String value) {
           this.greaterThanEffDt = value;                 
        protected String getLessThanEffDt() {
           return this.lessThanEffDt;
        protected void setLessThanEffDt(String value) {
           this.lessThanEffDt = value;                 
        public void runProgram()
            SFAPIService mySFAPIService;
            String CompletionText = "";
            String effDtStr2 = null;
        /* Code your program logic here.
        * Use getJDBCConnection method to get the connection object for any
        * JDBC operations.
        * Use CpContext provided commit,rollback methods to commit/rollback
        * data base transactions.
        * Don't forget to release the connection before returning from this
        * method.
        /* Call setCompletion method to set the request completion status and
        * completion text.
        * Status values are ReqCompletion.NORMAL,ReqCompletion.WARNING,
        * ReqCompletion.ERROR.
        * Use Completion text message of length 240 characters. If it is more
        * than 240 then full string will appear in log file and truncated 240
        * characters will be used as request completion text.
        try
            ServiceFactory factory = ServiceFactory.newInstance();
            mySFAPIService = (emsc.oracle.apps.emscper.sfapi.proxy.SFAPIService)factory.loadService(emsc.oracle.apps.emscper.sfapi.proxy.SFAPIService.class);      
            SFAPI api = mySFAPIService.getSFAPI();
           /// SFAPI api = new SFAPI();
            //Map<String, Object> requestContext = ((BindingProvider) api).getRequestContext();
            //requestContext.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
            System.out.println("ServiceName => " + mySFAPIService.getServiceName().toString());
            System.out.println("End Point   => " + mySFAPIService.getServiceName().toString());
            System.out.println(breakLine);
            // Authentication: Login to SFAPI:
            SFCredential credential = new SFCredential();
            // Fake credentials being passed in for this post:   
            credential.setCompanyId("XXX");
            credential.setUsername("XXX");
            credential.setPassword("XXX");
            credential.setDeveloperKey("XXX");
            HTTPConnection httpsConnection = null;       
            OracleSSLCredential _credential = new OracleSSLCredential();      
            _credential.setWallet("\\\\\\C:\\Program Files\\Java\\jdk1.6.0_33\\jre\\lib\\security", "ParkEstes3");
            /*System.setProperty("javax.net.ssl.trustStore","C:\\\\\OraHome_1\\jdev\\jdevbin\\jdk\\jre\\lib\\security\\keystore");
            System.setProperty("javax.net.ssl.trustStorePassword","changeit");  
            System.out.println(System.getProperty("javax.net.ssl.trustStore"));*/
            // SFParameter: Define a generic SFParameter List.  This is a necessary parameter
            // to invoking calls in SFAPI:      
             /*System.setProperty("javax.net.ssl.keyStore",
             "file:\\\C:\\jdk1.4.1\\jre\\lib\\security\\client.keystore");
             System.setProperty("javax.net.ssl.keyStorePassword","welcome");         */
            /*  System.setProperty("oracle.net.wallet_location",
                          "(SOURCE=(METHOD=file)(METHOD_DATA=(DIRECTORY=\\\C:\Users\dparrish\Oracle\WALLETS)))");  // (2)                     */
            File kstore = new File("C:\\OraHome_1\\jdev\\jdevbin\\jdk\\jre\\lib\\security\\jssecacerts");
            boolean exists = kstore.exists();
            if (!exists) {
                System.out.println("Keystore does not exist");
            else {
                System.out.println("Keystore does exist");
            System.setProperty("javax.net.ssl.trustStore", kstore.getAbsolutePath());
            System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
            //System.setProperty("proxySet", "false");
            //System.setProperty("http.proxyHost", "127.0.0.1");
            //System.setProperty("http.proxyPort", "8080");
            System.out.println(kstore.getAbsolutePath());
            List<SFParameter> lst = new ArrayList<SFParameter>();
            SFParameter param = new SFParameter();
            param.setName("");
            param.setValue("");
            lst.add(param);      
            SFParameter[] sfParam = lst.toArray(new SFParameter[lst.size()]);
            Login login = new Login();
            try {
                login.setCredential(credential);
                System.out.println("1");
                login.setParam(sfParam);
                System.out.println("2");
                LoginResponse loginResponse = new  LoginResponse();
                LoginResult loginResult = new LoginResult();
                try {
                     loginResponse = api.login(login);               
                catch (Exception e ) {
                    System.out.println(e.getMessage());
                System.out.println("3");
                try {               
                     loginResult = loginResponse.getResult();
                catch (Exception e ) {
                    System.out.println(e.getMessage());
                System.out.println("4");
                IsValidSession vs = new IsValidSession();                  
                IsValidSessionResponse isValidSessionResponse = api.isValidSession(vs);
                System.out.println("5");
                if (isValidSessionResponse.isResult()) {
                     System.out.println("Session is valid");
                     System.out.println("Result => " + loginResult.getSessionId());
                     System.out.println(breakLine);              
                    Logout logout = new Logout();
                    LogoutResponse logoutResponse = api.logout(logout);
                    if (logoutResponse.isResult()) {
                         System.out.println("Logout of SFAPI Successful");
                    else {
                        System.out.println("Logout of SFAPI Unsuccessful");
                else {
                     System.out.println("Session is invalid");
                    List<Error> errors = new ArrayList<Error>();
                    for (int i = 0; i < loginResult.getError().length;  i++) {
                        errors.add(loginResult.getError()[i]);
                    for (int i = 0; i < errors.size(); i++) {
                         System.out.println("Error Indice   => " + i);
                         System.out.println("Error Code:    => " + errors.get(i).getErrorCode());
                         System.out.println("Error Message: => " + errors.get(i).getErrorMessage());
                         System.out.println(breakLine);                                                          
                    } // end for loop of SFObject errors
                } // end InvalidSession
            catch (Exception e)
                 System.out.println("Session Credential Exception");
                 System.out.println("Exception => " + e.getMessage());
                 System.out.println(breakLine);                   
        catch (Exception e)
            System.out.println("Parameter List Exception");
            System.out.println("Exception => " + e.getMessage());
            System.out.println(breakLine);
        }   // end runProgram
        // Constructor:
        public SFAPITest()  {
        } // end constructor
        public static void main (String args[]) {
            try
                SFAPITest test = new SFAPITest();        
                test.runProgram();
            catch (Exception e) {
                System.out.println("main exception => " + e.getMessage());
    } // SFAPITest
    Here is the output with trace:
    WARNING: Unable to connect to URL: https://api4.successfactors.com:443/sfapi/v1/soap due to java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
    Session Credential Exception
    Exception => ; nested exception is:
        HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
    +---------------------------------------------------------------------------+
    Process exited with exit code 0.

    The other end is throwing back a programming error.
    That might be because you are sending incorrect data and the other end fails to validate it.
    You might be able to guess based on your C# code.  But, since you are using soap one generic solution is available to you.
    - Get an http proxy interceptor like wireshark.
    - Run it while your C# app runs, collect the http requests from that.
    - Run it while running your java code, collect the http requests from that.
    Compare the two.

  • Sending a dom via http Post

    Hi,
    for some reason unknown to me whenever I try to send a dom via http Post I get the following error:
    org.xml.sax.SAXParseException: The root element is required in a well-formed document.
    This is the source code:
    package com.cyberrein.payunion.transaction;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    //xml lib
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    //weblogic xml lib
    import weblogic.apache.xerces.dom.DocumentImpl;
    import weblogic.apache.xml.serialize.DOMSerializer;
    import weblogic.apache.xml.serialize.XMLSerializer;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    public class Xmltest extends HttpServlet {
    //Initialize global variables
    public void init(ServletConfig config) throws ServletException {
    super.init(config);
    //Process the HTTP Request
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Retrieve transaction data from HttpServletRequest.
    try {
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setValidating(false);
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document docIn = db.parse(request.getInputStream());
    String code = "XX";
    String tranID = "000000";
    String message = "This Card Is Invalid. Transaction Discontinued";
    //Output dom
    Document docOut = new DocumentImpl();
    Element e = (Element)docOut.createElement("TransactionResponseData");
    e.setAttribute("Code", code);
    e.setAttribute("TransactionID", tranID);
    e.setAttribute("Message", message);
    docOut.appendChild(e);
    FileOutputStream fos;
    fos = new FileOutputStream("/victory");
    DOMSerializer serX = new XMLSerializer(fos,null);
    serX.serialize(docIn);
    DOMSerializer ser = new XMLSerializer(response.getOutputStream(), null);
         ser.serialize(docOut);
         } catch (Throwable e) {e.printStackTrace();}
    //Get Servlet information
    public String getServletInfo() {
    return "com.cyberrein.payunion.transaction.Xmltest Information";
    package com.cyberrein.payunion.transaction;
    import org.w3c.dom.*;
    import org.apache.xerces.*;
    import org.apache.xerces.dom.*;
    import org.apache.xerces.parsers.*;
    import org.apache.xml.serialize.*;
    import org.xml.sax.*;
    import java.net.*;
    import java.io.*;
    public class CardClient {
    private String sURI;
    public BufferedReader in
    = new BufferedReader(new InputStreamReader(System.in));
    public CardClient(String serverURI) {
    sURI = serverURI;
    public Document test(){
    Document docIn = null;
    try
    //XML Document impl
         docIn = new DocumentImpl();
    //Create the root element
         Element t = docIn.createElement("TransactionData");
    Element k = docIn.createElement("Payunion.com");
    k.appendChild( docIn.createTextNode("North American server") );
    t.appendChild(k);
    //Set attributes
    t.setAttribute("cardnumber", "4444444444444444");
    t.setAttribute("amount", "3000.67");
    t.setAttribute("name", "tolu agbeja");
    t.setAttribute("cvv2", "001");
    t.setAttribute("pu_number", "ejs:pupk:23456");
    t.setAttribute("expirydate", "0903");
    t.setAttribute("address", "100 peachtree industrial");
    t.setAttribute("zipcode", "30329");
    docIn.appendChild(t);
    catch (Throwable te)
    te.printStackTrace();
    return docIn;
    public Document sendRequest(Document doc) {
         Document docOut = null;
         try {
         URL url = new URL("http://" + sURI);
         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("POST");
         conn.setDoInput(true);
         conn.setDoOutput(true);
         OutputStream out = conn.getOutputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    XMLSerializer ser = new XMLSerializer( out, new OutputFormat("xml", "UTF-8", false) );
    ser.serialize(doc);
    while(!br.ready()){}
         DOMParser parser = new DOMParser();
         parser.parse(new InputSource(br));
         docOut = parser.getDocument();
    catch (Throwable et)
         et.printStackTrace();
         return docOut;
    public static void main(String []args)
    CardClient c = new CardClient("cyber1:7001/xmltest");
    try
    Document doc = c.sendRequest(c.test());
    Element responseMessage = (Element)doc.getElementsByTagName("TransactionResponseData").item(0);
    String message = responseMessage.getAttribute("Message");
    String tranID = responseMessage.getAttribute("TransactionID");
    String code = responseMessage.getAttribute("Code");
    System.out.println(message);
    System.out.println("");
    System.out.println("The Response Code Is: "+code);
    System.out.println("");
    System.out.println("The Transaction ID Is: "+tranID);
    catch(Exception ex)
    ex.printStackTrace();
    All comments will be appreciated!!

    Hi, thanks for your reply i knew the FileUplaod was the way forward.
    I read topics advising to use the FileUpload and tried the following but it did not seem to work ( i get an HTTP Internal Server error when i try that):
    try
    DiskFileUpload upload = new DiskFileUpload();
    boolean isMultipart = FileUpload.isMultipartContent(request);
    if( isMultipart )
    List items = upload.parseRequest( request );
    Iterator iter = items.iterator();
    while( iter.hasNext() )
    FileItem fileItem = ( FileItem ) iter.next();
    File uploadedFile = new File("myreceivedfile.zip");
    fileItem.write( uploadedFile );
    }catch (Exception e)
    System.out.println("RECEIVER: " + e.getMessage());
    Also DiskFileUpload,isMultipartContent and parseRequest have a line going through the middle (horizontal middle).
    Edited by: Overmars08 on Jun 23, 2009 5:35 AM
    Edited by: Overmars08 on Jun 23, 2009 5:36 AM

  • How to pass XML tags in a soapbody parameter having datatype as string?

    Hi,
    I need to pass XML tags as a String parameter in SOAP:Body.
    When I tried send SOAP Request, The SOAP Request was changing < to <
    and > to > respectively. Is there any way to ensure that the XML tags (< and >) remain as it is without getting changed.
    I also tried to retrieve XML file and stored in a StringBuffer and tried to send SOAP Request but i am still receiving the < and > tags in my SOAP Request.
    Pl suggest some alternatives to avoid storing the XML in the form of string and instead directly store the XML into a XML Node so that i can avoid the above condition
    Thanks in advance,
    gnsinhyd

    Hi,
    The sample code I used is as follows:
    package somepackage;
    import javax.mail.internet
    import javax.xml.messaging.*;
    import javax.xml.soap.*;
    import javax.xml.transform.*;
    import javax.activation.*;
    public class SomeClassName{
    // Some namespace declarations
    public static void main(String[] args) throws someExceptions{
    try
    // Create the connection
    SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance();
    SOAPConnection connection = connectionFactory.createConnection();
    // create a new SOAP message using SAAJ API�s
    MessageFactory messageFactory = MessageFactory.newInstance();
    SOAPMessage request = messageFactory.createMessage();
    // Create a SoapAction header
    MimeHeaders headers = request.getMimeHeaders();
    headers.addHeader("SOAPAction", "soapaction url");
    // Object for SOAP Message parts
    SOAPPart part = request.getSOAPPart();
    SOAPEnvelope envelope = part.getEnvelope();
    envelope.addNamespaceDeclaration("xsd","http://www.w3.org/2001/XMLSchema");
    envelope.addNamespaceDeclaration("xsi","http://www.w3.org/2001/XMLSchema-instance");
    //envelope.addNamespaceDeclaration("enc","http://schemas.xmlsoap.org/soap/encoding/");
    envelope.addNamespaceDeclaration("soap","http://schemas.xmlsoap.org/soap/envelop/");
    //envelope.setEncodingStyle("http://schemas.xmlsoap.org/soap/encoding/");
    SOAPBody body = envelope.getBody();
    SOAPHeader header = envelope.getHeader();
    // Now, build the ClaimStorage element in the body for our request
    Name somename = envelope.createName("somename");
    // � and configure it with the specifics of our request
    SOAPElement ClaimStorage = body.addTextNode("somename");
    ClaimStorage.addNamespaceDeclaration("xmlns","url");
    ClaimStorage.addChildElement(somename).addTextNode("somename");
    ClaimStorage.addChildElement(xmlclaim).addTextNode("<XMLTAGS">); <---THE PROBLEM IS HERE
    ----> THE XML TAGS < > ARE CHANGING TO &LT; AND &GT; MOST PROBABLY DUE TO POST I THINK.
    // Save Message
    request.saveChanges();
    // View SOAP Request
    System.out.println("\n Soap Request:\n");
    request.writeTo(System.out);
    System.out.println();
    // Now, create a connection to the HTTP SOAP endpoint
    URLEndpoint endpoint = new URLEndpoint("url.asmx");
    // Send request, view response. In a real program, we�d process the response envelope programmatically to see if there was a fault, etc.
    System.out.println("request =\n" + request);
    SOAPMessage response = connection.call(request, endpoint);
    // View the output
    System.out.println("\nXML Response\n");
    // Create Transformer
    TransformerFactory tff = TransformerFactory.newInstance();
    Transformer tf = tff.newTransformer();
    // Get reply content
    Source sc = response.getSOAPPart().getContent();
    System.out.println("SOAP Body" + response.getSOAPBody());
    // Set output transformation
    StreamResult result = new StreamResult(System.out);
    tf.transform(sc, result);
    System.out.println();
    // Close connection
    connection.close();
    System.out.println("\nResponse =\n" + response);
    catch (Exception e)
    e.printStackTrace();
    Pl. reply as soon as possible
    Thanks in advance

Maybe you are looking for

  • How do I add a photo (widget) to my Dashboard?

    How do I add a photo (widget) to my Dashboard?

  • Still no ability to copy and paste ?

    I have heard that cipy and paste feature promised to be in 2.1 version. today it is 2.2. Still no copy and paste ? I know that there is Magicpad - but it ***** since it has only copy and paste witing the app only and that feature should be in any OS.

  • How to Deactivate MENU and SYSTEM button in Portal.

    Hello, I have created a SAP transaction iView of Y Transaction. Now it showing me all the buttons and Transaction Box on selection screen in EP. My requirement is to have only EXECUTE rest buttons should be hide. Some of the buttons I have controlled

  • New to 3550's

    I understand without SVI on each group of ports I can't route traffic through my Gig 0/1 connection. I need to be able to put the listed networks below all on my 3550 Version 12.1(22)EA1a switch. I have no problems adding the vlan's nor getting the t

  • My ipod went all white. Icant turn it on or off. It just stays white

    I was playing a game on my ipod when it went all white. the screen wont turn off. it just stays white. what do i do now?