Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Nikandra94
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 16
#1

Проверка соединения с сайтом через HttpUrlConnection - Программирование Android

19.05.2016, 20:37. Просмотров 605. Ответов 19
Метки нет (Все метки)

я нашла кучу информации, где после подключения что-либо выдает. Как написать программный код, чтоб выдавало только удалось подсоединиться или нет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2016, 20:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка соединения с сайтом через HttpUrlConnection (Программирование Android):

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

Как отправить данные json через HttpURLConnection - Программирование Android
Здравствуйте! Мне нужно работать с АПИ из приложения. Использую HttpURLConnection URL url = new URL(apiHost); ...

Проверка интернет соединения - Программирование Android
Добрый день , я хотел бы проверить интернет соединение , у меня уже есть функция: public boolean checkNetworkStatus(Context context){ ...

Проверка интернет соединения - Программирование Android
Как же всё-таки прописать грамотную проверку интернет соединения? Необходимо при включенном wi-fi и отсутствии интернета в WebView...

Проверка наличия интернет соединения - Программирование Android
Если в public void onStart() { super.onStart(); } вставить код проверки на включен ли интернет и если не...

Проверка Socket на наличие соединения - Программирование Android
Помогите сделать проверку сокета перед подключением. public void onClick(View view) { if (socket.isClosed()) { socket = new...

19
DarkVortex
103 / 69 / 18
Регистрация: 07.07.2014
Сообщений: 240
19.05.2016, 21:06 #2
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    public boolean CheckHost(String host){
        HttpURLConnection connection;
        try {
            connection = (HttpURLConnection) new URL(host).openConnection();
            connection.setRequestProperty("Accept-Encoding", "");
            connection.setRequestMethod("HEAD");
            int responseCode = connection.getResponseCode();
            if (responseCode != 200) {
                return false;
            }
        } catch (Exception e) {
            return false;
        }
        return true;
    }
Я так делаю.
1
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
19.05.2016, 21:25 #3
DarkVortex, чуть подчищу Ваш код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public boolean checkHost(String host) {
        HttpURLConnection connection = null;
        try {
            connection = (HttpURLConnection) new URL(host).openConnection();
            connection.setRequestProperty("Accept-Encoding", "");
            connection.setRequestMethod("HEAD");
            return connection.getResponseCode() == HttpURLConnection.HTTP_OK;
        } catch (Exception e) {
            return false;
        } finally {
            releaseResource(connection);
        }
    }
 
    private void releaseResource(HttpURLConnection connection) {
        if (connection != null) {
            connection.disconnect();
        }
    }
1
DarkVortex
103 / 69 / 18
Регистрация: 07.07.2014
Сообщений: 240
19.05.2016, 21:39 #4
YuraAAA, никогда не против) просто использовал для своего сервера и ответ 200 меня устраивал)
1
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
19.05.2016, 21:47 #5
DarkVortex, у Вас connection не был закрыт Да и лучше вместо "200" использовать константу
1
DarkVortex
103 / 69 / 18
Регистрация: 07.07.2014
Сообщений: 240
19.05.2016, 22:28 #6
YuraAAA, а чем 200 не константа?)
1
Nikandra94
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 16
19.05.2016, 22:40  [ТС] #7
YuraAAA, DarkVortex, Спасибо вам огромное, вы спасли меня)))
0
Hank
60 / 51 / 4
Регистрация: 28.12.2011
Сообщений: 289
19.05.2016, 22:56 #8
Цитата Сообщение от DarkVortex Посмотреть сообщение
а чем 200 не константа?)
а если завтра это значение будет не 200 (в данном контексте маловероятно)? будет все приложения править?
1
Nikandra94
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 16
19.05.2016, 23:15  [ТС] #9
YuraAAA, что-то у меня постоянно false вылетает...
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
19.05.2016, 23:36 #10
Nikandra94, покажите, как Вы его вызываете? Permission на INTERNET есть в манифесте?

Java
1
2
3
} catch (Exception e) {
      return false;
}
поменяйте на

Java
1
2
3
4
} catch (Exception e) {
      e.printStackTrace();
      return false;
}
1
Nikandra94
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 16
19.05.2016, 23:39  [ТС] #11
YuraAAA, так или что-то напутала?
k= CheckHost("https://www.google.ru");
0
DarkVortex
103 / 69 / 18
Регистрация: 07.07.2014
Сообщений: 240
19.05.2016, 23:43 #12
Hank, ну тогда видимо сломается весь интернет) в HttpURLConnection.HTTP_OK ведь никто ничего не поменяет

Добавлено через 1 минуту
Nikandra94, k= CheckHost("http://www.google.ru");
1
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
19.05.2016, 23:45 #13
Хм, не, должно быть нормально всё.
Bash
1
2
3
$ curl -X HEAD [url]https://www.google.ru[/url] -I -H 'Accept-Encoding:'
HTTP/1.1 200 OK
Date: Thu, 19 May 2016 20:43:28 GMT
Манифест покажите и добавьте e.printStackTrace() внутрь catch блока.

DarkVortex, использование готовых констант это правило хорошего тона Если другой программист посмотрит Ваш код, для него это, возможно, будет не очень понятно, что же такое это "200". А HTTP_OK более понятно
1
Nikandra94
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 16
19.05.2016, 23:56  [ТС] #14
вот,YuraAAA
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.remof">
    <uses-permission android:name="android.permission.INTERNET"/>
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".Pro">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".result"
            android:label="@string/title_activity_result"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity
            android:name=".anti"
            android:label="@string/title_activity_anti"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity
            android:name=".notFireWall"
            android:label="@string/title_activity_not_fire_wall"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity
            android:name=".notanti"
            android:label="@string/title_activity_notanti"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity
            android:name=".Drugie"
            android:label="@string/title_activity_drugie"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity
            android:name=".Branmayer"
            android:label="@string/title_activity_branmayer"
            android:theme="@style/AppTheme.NoActionBar"></activity>
    </application>
 
</manifest>
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
20.05.2016, 00:26 #15
Nikandra94, ещё раз
1. добавьте e.printStackTrace() перед return false;
2.
Цитата Сообщение от YuraAAA Посмотреть сообщение
return connection.getResponseCode() == HttpURLConnection.HTTP_OK;
меняйте на
Java
1
2
3
int code = connection.getResponseCode();
Log.d("HttpUrlConnection", "" + code);
return code == HttpURLConnection.HTTP_OK;
и запустите снова. Будут ли ошибки в трейсе, какой будет код в логах
1
20.05.2016, 00:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2016, 00:26
Привет! Вот еще темы с ответами:

HttpUrlConnection - Программирование Android
Всем привет, не могу разобраться с HttpUrlConnection, написал код по рекомендациям Android и что-то работает не так. По порядку. 1)...

Использование HttpURLConnection - Программирование Android
Всем привет. замечаю странное поведение коннекта к локальному серваку - который реально всегда доступен по вай фаю. Запросы делаются раз...

HttpURLConnection запрос - Программирование Android
Делаю запрос на сервер public class AsyncTaskc extends AsyncTask&lt;Void, String, String&gt; { private String urls; public...

HttpURLConnection, ошибка - Программирование Android
Пытаюсь получить данную xml из инета: http://katolik.ru/mir.feed?type=rss try { URL url = new URL(&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.