Я бы не сказал дубликат, так как он хочет получить код ответа, но @Ajit, вы все равно должны это проверить. Добавьте немного экспериментов, и все готово.
slezica
2
Вместо того, чтобы требовать, чтобы другие люди делали вашу работу за вас. Пожалуйста, продемонстрируйте, что вы хотя бы пытались выполнить эту задачу самостоятельно. Покажите свой текущий код и как вы пытались выполнить эту задачу. Если вы хотите, чтобы кто-то выполнял за вас вашу работу без каких-либо усилий с вашей стороны, вы можете нанять кого-нибудь и заплатить ему.
Патрик В. МакМахон
Какое требование он сделал? Он попросил помощи вместо того, чтобы крутить колеса, когда он не знал, что делать. Он использовал сообщество так, как было задумано.
В моем конкретном случае и с вашим методом я получаю IOException («Не удалось аутентифицироваться через прокси-сервер»), который обычно является ошибкой http 407. Есть ли способ, где я могу получить точность (код ошибки http) относительно возникшего исключения с помощью метода getRespondeCode ()? Кстати, я знаю, как обрабатывать мою ошибку, и я просто хочу знать, как дифференцировать каждое исключение (или, по крайней мере, это конкретное исключение). Спасибо.
grattmandu03
2
@ grattmandu03 - я не уверен. Похоже, вы сталкиваетесь с stackoverflow.com/questions/18900143/… (на который, к сожалению, нет ответа). Вы можете попробовать использовать высокоуровневую инфраструктуру, такую как HttpClient, которая, вероятно, даст вам немного больше контроля над тем, как вы будете обрабатывать подобные ответы.
Роб Хруска
Хорошо, спасибо за ваш ответ. Моя работа состоит в том, чтобы адаптировать старый код для работы с этим прокси, и чем меньше модификаций, тем больше клиент поймет мою работу. Но я думаю, это для меня (прямо сейчас) единственный способ сделать то, что я хочу. Спасибо, в любом случае.
grattmandu03
Вам нужно вызвать disnect () в блоке finally?
Эндрю Свон
Это, вероятно, зависит, я бы сделал некоторые исследования. В документах говорят Вызов disconnect()методы может закрыть сокет , лежащий в основе , если постоянное соединение находится в режиме ожидания в противном случае в то время. , который не гарантирует. Документы также говорят, Указывает, что другие запросы к серверу маловероятны в ближайшем будущем. Вызов disconnect()не должен подразумевать, что этот HttpURLConnectionэкземпляр может быть повторно использован для других запросов. Если вы используете InputStreamдля чтения данных, вы должны close()этот поток в finallyблоке.
Попробуйте этот кусок кода, который проверяет 400 сообщений об ошибках
huc =(HttpURLConnection)(new URL(url).openConnection());
huc.setRequestMethod("HEAD");
huc.connect();
respCode = huc.getResponseCode();if(respCode >=400){System.out.println(url+" is a broken link");}else{System.out.println(url+" is a valid link");}
Эффективный способ получения данных (с неравномерной нагрузкой) с помощью сканера.
publicstaticString getResponseFromHttpUrl(URL url)throwsIOException{HttpURLConnection urlConnection =(HttpURLConnection) url.openConnection();try{InputStream in = urlConnection.getInputStream();Scanner scanner =newScanner(in);
scanner.useDelimiter("\\A");// Put entire content to next token string, Converts utf8 to 16, Handles buffering for different width packetsboolean hasInput = scanner.hasNext();if(hasInput){return scanner.next();}else{returnnull;}}finally{
urlConnection.disconnect();}}
Ответы:
HttpURLConnection :
Это ни в коем случае не надежный пример; вам нужно справиться
IOException
с S и еще много чего. Но это должно помочь вам начать.Если вам нужно что-то с более широкими возможностями, проверьте HttpClient .
источник
disconnect()
методы может закрыть сокет , лежащий в основе , если постоянное соединение находится в режиме ожидания в противном случае в то время. , который не гарантирует. Документы также говорят, Указывает, что другие запросы к серверу маловероятны в ближайшем будущем. Вызовdisconnect()
не должен подразумевать, что этотHttpURLConnection
экземпляр может быть повторно использован для других запросов. Если вы используетеInputStream
для чтения данных, вы должныclose()
этот поток вfinally
блоке.источник
Вы можете попробовать следующее:
источник
источник
Это сработало для меня:
источник
Вот что сработало для меня:
Надеюсь, это поможет кому-то :)
источник
Попробуйте этот кусок кода, который проверяет 400 сообщений об ошибках
источник
Эффективный способ получения данных (с неравномерной нагрузкой) с помощью сканера.
источник
Это полностью статический метод, который вы можете адаптировать для установки времени ожидания и кода ошибки при возникновении IOException:
источник
, , , , , , ,
источник
Вы можете использовать java http / https url connection, чтобы получить код ответа с сайта и другую информацию, а также пример кода.
источник
Это старый вопрос, но позволяет показать в REST-стиле (JAX-RS):
источник