Send Xml string through POST method in java
44,414
Send it as parameter: Using Apache HttpClient
String url = "https://yoururl.com";
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
// add header
post.setHeader("User-Agent", USER_AGENT);
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("xml", xmlString));
post.setEntity(new UrlEncodedFormEntity(urlParameters));
HttpResponse response = client.execute(post);
System.out.println("\nSending 'POST' request to URL : " + url);
System.out.println("Post parameters : " + post.getEntity());
System.out.println("Response Code : " +
response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
System.out.println(result.toString());
Author by
happy
Updated on July 31, 2022Comments
-
happy almost 2 years
I want to pass an xml string through POST method to an URL.
I tried below snippet but it doesn't return anything
disableCertificateValidation(); String url = "https://..url"; //https Properties sysProps = System.getProperties(); sysProps.put("proxySet", "true"); sysProps.put("proxyHost", "1.2.3.4"); sysProps.put("proxyPort", "80"); Authenticator authenticator = new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return (new PasswordAuthentication("userid", "password".toCharArray())); } }; Authenticator.setDefault(authenticator); String xml = ---xml string; URL urll; HttpURLConnection connection = null; try { // Create connection urll = new URL(url); connection = (HttpURLConnection) urll.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); connection.setRequestProperty("Content-Length", "" + Integer.toString(xml.getBytes().length)); connection.setRequestProperty("Content-Language", "en-US"); connection.setUseCaches(false); connection.setDoInput(true); connection.setDoOutput(true); // Send request DataOutputStream wr = new DataOutputStream(connection .getOutputStream()); wr.writeBytes(xml); wr.flush(); wr.close(); // Get Response InputStream is = connection.getInputStream(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); String line; StringBuffer response = new StringBuffer(); while ((line = rd.readLine()) != null) { response.append(line); response.append('\r'); } rd.close(); System.out.println("response.toString();"+response.toString()); } catch (Exception e) { e.printStackTrace(); } finally { if (connection != null) { connection.disconnect(); } }
But when I try to post it through jsp I get the proper response from the url.
<script type="text/javascript"> function set(){ document.getElementById("eXml").value=---xml string document.getElementById("textt").value=document.getElementById("eXml").value; alert(document.getElementById("eXml").value); document.getElementById("myForm").action="https---" //https url; document.getElementById("myForm").submit(); } </script> <body> <form method="POST" id="myForm"> <input type="submit" name="send" onclick="set()"> <input type="text" id="textt" value='test'> <input type="hidden" name="eXml" id="eXml">
-
therealprashant over 7 yearsIsnt there a more elegant way to do this rather than doing this ugly stringify method? Like how JSON works beautifully.