Ява, Исключение FileNotfound, читая conn.getInputStream ()

Пожалуйста, скажите мне кого-то, Как решить эту проблему, Когда-то я получаю Исключение Filenotfound и Некоторое время этот хорошо работающий код.

Ниже мой код,

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;
        }
1
nl ja de
Можно ли показать stacktrace и сообщение об ошибке, которое вы получаете.
добавлено автор CloudyMarble, источник
Какова ценность url1 ?
добавлено автор Shashank Kadne, источник
попытайтесь писать wr.close (); немедленно после wr.flush ()
добавлено автор Bhavik Shah, источник
Вы видите "Слишком много открытых файлов" в сообщении исключения?
добавлено автор partlov, источник

3 ответы

Перепишите как это и сообщите мне, как вы идете... (отметьте закрытие чтения и написания потоков, также очистка потоков, если исключение брошено).

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;
}
2
добавлено

Эта проблема, кажется, известна, но по разным причинам так не ясный, почему это произошло.

Некоторые нити рекомендовали бы закрыть OutputStreamWriter как смывание, это недостаточно, для этого я попробовал бы к clos его непосредственно после fushing, поскольку вы не используете его в коде между потоком и близко.

Другие нити показывают, что, используя различные связи как HttpURLConnection избегают этой проблемы от появления (Смотреть здесь)

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.

Некоторые подобные вопросы:

URL доступен с браузером, но все еще FileNotFoundException с URLConnection

URLConnection FileNotFoundException для нестандартных источников порта HTTP

URLConnection бросок FileNotFoundException

Пожелайте вам удачи.

1
добавлено

Это возвращает FileNotFoundException, когда ответ сервера на запрос HTTP - код 404.

Проверьте свой URL.

0
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async