Narendra
Narendra

Reputation: 1868

Java, FileNotfound Exception, While reading conn.getInputStream()

Please tell me some one, How to resolve this problem, Sometime I am getting Filenotfound Exception and Some time this code working fine.

Below is my code,

public String sendSMS(String data, String url1) {
            URL url;

            String status = "Somthing wrong ";
            try {
                url = new URL(url1);
                URLConnection conn = url.openConnection();
                conn.setDoOutput(true);
                conn.setRequestProperty("User-Agent","Mozilla/5.0 ( compatible ) ");
                conn.setRequestProperty("Accept","*/*");
                OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
                wr.write(data);
                wr.flush();

                // Get the response
                try {
                    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                    String s;
                    while ((s = rd.readLine()) != null) {
                        status = s;
                    }
                    rd.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }

                wr.close();

            } catch (MalformedURLException e) {
                status = "MalformedURLException Exception in sendSMS";
                e.printStackTrace();
            } catch (IOException e) {
                status = "IO Exception in sendSMS";
                e.printStackTrace();
            }

            return status;
        }

Upvotes: 1

Views: 1544

Answers (3)

Chocksmith
Chocksmith

Reputation: 1208

It returns FileNotFoundException when the server response to HTTP request is code 404.

Check your URL.

Upvotes: 0

xagyg
xagyg

Reputation: 9711

Rewrite like this and let me know how you go... (note closing of reading and writing streams, also the cleanup of streams if an exception is thrown).

public String sendSMS(String data, String url1) {
    URL url;
    OutputStreamWriter wr = null;
    BufferedReader rd = null;

    String status = "Somthing wrong ";

    try {

        url = new URL(url1);
        URLConnection conn = url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestProperty("User-Agent","Mozilla/5.0 ( compatible ) ");
        conn.setRequestProperty("Accept","*/*");

        wr = new OutputStreamWriter(conn.getOutputStream());
        wr.write(data);
        wr.flush();
        wr.close();

        rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String s;
        while ((s = rd.readLine()) != null) {
            status = s;
        }
        rd.close();                

    } catch (Exception e) {
        if (wr != null) try { wr.close(); } catch (Exception x) {/*cleanup*/}
        if (rd != null) try { rd.close(); } catch (Exception x) {/*cleanup*/}
        e.printStackTrace();
    }    

    return status;
}

Upvotes: 2

CloudyMarble
CloudyMarble

Reputation: 37566

This issue seems to be known, but for different reasons so its not clear why this happend.

Some threads would recommend closing the OutputStreamWriter as flushing it is not enough, therefor i would try to clos it directly after fushing as you are not using it in the code between the flush and close.

Other threads show that using a different connections like HttpURLConnection are avoiding this problem from occuring (Take a look here)

Another article suggests to use the URLEncoder class’ static method encode. This method takes a string and encodes it to a string that is ok to put in a URL.

Some similar questions:

URL is accessable with browser but still FileNotFoundException with URLConnection

URLConnection FileNotFoundException for non-standard HTTP port sources

URLConnection throwing FileNotFoundException

Wish you good luck.

Upvotes: 1

Related Questions