Обработка неправильных URL - PullRequest
0 голосов
/ 16 мая 2011

У меня есть CSV-файлы, хранящиеся на моем сервере.Если я ввожу правильный ключ (который является частью URL), я получаю то, что хочу, но если введенный ключ был неправильным, мое приложение вылетает.Я хочу быть в состоянии отловить ошибку.

    String url="http://mysite.com/template";
            url=url+et.getText().toString().toLowerCase()+".csv";

            csv.setURL(url);
            if(csv.checkURL()){
                enterToDB();

            }
            else{
                tv.setText("Wrong key");
            }       

и мой CSVReader выглядит так:

 public void setURL(String file){

     try {
        URL url = new URL(file);
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
    success=true;
        in.close();
    } catch (MalformedURLException e) { success=false;} catch (IOException e) {  success=false;     }
   }

public boolean checkURL(){
    return success;
}

  }

1 Ответ

0 голосов
/ 16 мая 2011

Без полного минимального кода, необходимого для репликации проблемы, и без информации о том, что представляет собой конкретная ошибка (например, трассировка стека), я просто предполагаю, что подпрограммы setURL / checkURL не совсем выполняют то, что вы хотите. Похоже, они предполагают, что openStream сгенерирует исключение, если ключ в URL неверен, но это не так. Даже если путь или ключ в URL неверны, HTTP-сервер все равно предоставит ответ. Ответ может не соответствовать 200 OK, и тело ответа может не включать в себя то, что вы ищете, но оно все равно даст ответ, и открытый поток может быть использован для чтения ответа.

Итак, если я правильно понимаю, вы действительно хотите проверить содержимое ответа (включая, возможно, код состояния HTTP), прежде чем решить, является ли "успех" истинным или ложным.

Тейн опубликовал код, который я передал ему в Как мне обрабатывать тайм-ауты сервера и ответы с кодами ошибок на сообщение http в Android App? . Я рекомендую просмотреть его и посмотреть, обеспечивает ли он структуру, необходимую для обработки успешных и неудачных ответов.

Имеет смысл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...