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());
Share:
44,414
happy
Author by

happy

Updated on July 31, 2022

Comments

  • happy
    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
    therealprashant over 7 years
    Isnt there a more elegant way to do this rather than doing this ugly stringify method? Like how JSON works beautifully.