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()); } }