2016-12-05 3 views
0

Для моего класса информатики мы должны создать программу, в которой пользователь вводит слово, и мы берем это слово и угадываем, правильно ли оно написано. Мы вводим слово в словарь.com и читаем его.создание проверки орфографии, прочитав веб-сайт

Мы добавляем слово, которое они ввели в URL словаря, и затем проверяем, отображается ли это слово на веб-сайте. Если это так, оно написано правильно, а затем, если оно не написано правильно. Вот код для чтения URL:

URL url = new URL("http://www.dictionary.com/search?q=" + word); 

     // open a buffered reader on the url 
     InputStream inStr = url.openStream(); 

     BufferedReader reader = 
      new BufferedReader(new InputStreamReader(inStr)); 

Когда они делают по буквам слово правильно все работает замечательно, но когда они это заклинание неправильно он бросает файл не найден исключение. Это бросает это, потому что, если вы ищете слово на dictionary.com, он меняет ссылку. Там, где это обычно будет «www.dictionary.com/search?q=word», оно изменяется на «http://www.dictionary.com/misspelling?term=wrod&s=t»

Поскольку он меняет ссылку, он выдает исключение, и программа не работает. Есть ли у кого-нибудь предложения о том, что я должен делать или менять? Спасибо!

+4

Ловить исключение и рассматривать как орфографическую ошибку. – OldProgrammer

ответ

0

Hacky way: Поймать исключение и вернуть «не слово». Проблема с этим подходом заключается в том, что если веб-сайт недоступен, он вернет «ни слова».

Лучший способ: проверить, есть ли у вас код HTTP 200 или HTTP 302 (перенаправление) и вернуть «ни слова».

0

Я согласен с очень проголосовавшим комментарием, что вы должны поймать исключение, но я бы рекомендовал вам использовать класс HttpURLConnection, чтобы сделать ваш вызов GET на dictionary.com с заданным словом. Если вы следуете приведенному ниже шаблону, вы все равно можете захватить любой поток ошибок, поступающий с сайта. И вы должны иметь возможность проанализировать ответ и проверить, чтобы на самом деле это произошло из-за неправильного слова. Существует вероятность исключения для некоторого другого аргумента, вы не должны считать это как слово, которое не найдено.

String url = "http://www.dictionary.com/search?q=" + word"; 

URL obj = new URL(url); 
HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 
con.setRequestMethod("GET"); 

int responseCode = con.getResponseCode(); 
// check the response code if you wish 
InputStream inputStream = null; 
try { 
    inputStream = con.getInputStream(); 
} 
catch (IOException exception) { 
    inputStream = con.getErrorStream(); 
} 
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream)); 

Update:

Я просто пытался вводить слово, которое не может быть найдено, и код ответа HTTP является 404. Таким образом, вы можете уйти, просто проверив код ответа для 404, или, чтобы быть более тщательным, вы могли бы даже проанализировать поток ошибок.

Смежные вопросы