0

I wrote the below code to send post request to an url. When I ran the code I am getting 500 error code. But, when I tried the same url in SOAP UI with the below headers I got the response back. May I know what is wrong in my code. Thanks in advance. I doubt I didn't add the headers properly.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:arm="http://siebel.com/Webservice">
        <soapenv:Header>
               <UsernameToken xmlns="http://siebel.com/webservices">username</UsernameToken>
               <PasswordText xmlns="http://siebel.com/webservices">password</PasswordText>
               <SessionType xmlns="http://siebel.com/webservices">Stateless</SessionType>   
            </soapenv:Header>
          <soapenv:Body>
             <arm:QueryList_Input>
                <arm:SRNum></arm:SRNum>
             </arm:QueryList_Input>
          </soapenv:Body>
        </soapenv:Envelope> 

Below is my code.

        package com.siebel.Webservice;

    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;

    import javax.net.ssl.HttpsURLConnection;

    public class HttpQueryList {
        private final String USER_AGENT = "Mozilla/5.0";

        public static void main(String[] args) throws Exception {

            HttpQueryList http = new HttpQueryList();



            System.out.println("\nTesting 2 - Send Http POST request");
            http.sendPost();

        }



        // HTTP POST request
        private void sendPost() throws Exception {

            String url = "https://mywebsite.org/start.swe";
            URL obj = new URL(url);
            HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();

            //add reuqest header
            con.setRequestMethod("POST");
            con.setRequestProperty("UsernameToken", "username");
            con.setRequestProperty("PasswordText", "password");

            String urlParameters = "SWEExtSource=WebService&SWEExtCmd=Execute&WSSOAP=1";

            // Send post request
            con.setDoOutput(true);
            DataOutputStream wr = new DataOutputStream(con.getOutputStream());
            wr.writeBytes(urlParameters);
            wr.flush();
            wr.close();

            int responseCode = con.getResponseCode();
            System.out.println("\nSending 'POST' request to URL : " + url);
            System.out.println("Post parameters : " + urlParameters);
            System.out.println("Response Code : " + responseCode);

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            //print result
            System.out.println(response.toString());

        }

    }
James
  • 337
  • 4
  • 12
  • Check this out : https://stackoverflow.com/questions/14522931/how-to-add-header-to-soap-request – Arar Oct 05 '17 at 20:08

1 Answers1

1

In your XML, you are specifying a token. When I have done this using SOAP UI, I have a certificate file that I use. In my case, I put it in my C:\Program Files (x86)\SmartBear\SoapUI-5.2.1\bin folder. Then I configured SOAP UI to use this. Do you have a certificate? If yes, are you referencing it?

Steven
  • 59
  • 2