Search code examples
androidandroid-4.4-kitkatdataoutputstream

What should I use on platforms pre-Kitkat


I am trying to send a POST to a URL and then read the response.

HttpURLConnection conn = (HttpURLConnection) registerURL.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setInstanceFollowRedirects(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("charset", "utf-8");
conn.setRequestProperty("Content-Length", Integer.toString(postDataLength));
conn.setUseCaches(false);
try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
    wr.write(postData);
}

In the above, AndroidStudio warns that the line

DataOutputStream wr = new DataOutputStream(conn.getOutputStream())

requires API level 19. In order to avail this to older versions, what alternative could I use? I tried searching via Google, but did not seem to find anything helpful.


Solution

  • Try replacing (try-with-resources with a regular try block);

    try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
        wr.write(postData);
    }
    

    with

        DataOutputStream wr = null;
    
        try {
            wr = new DataOutputStream(conn.getOutputStream());
            wr.write(postData);
    
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(wr != null)
                try {
                    wr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
    

    This should stop AS from showing any more warnings