Запросы к web серверу нужно выполнять в отдельном потоке.
Подготовка
Установим в манифесте разрешение на работу с интернетом:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Работа с GET запросом
DefaultHttpClient hc = new DefaultHttpClient(); ResponseHandler response = new BasicResponseHandler(); HttpGet http = new HttpGet("http://api.devreadwrite.com/v1/getUserData?id=1"); //получаем ответ от сервера String response = (String) hc.execute(http, response);
Для передачи спец символов (например: !"№;%?()) необходимо их преобразовать с помощью URLEncoder:
String url = URLEncoder.encode("данные %?!", "UTF-8");
Работа с POST запросом
HttpClient httpclient = new DefaultHttpClient(); HttpPost http = new HttpPost("http://api.devreadwrite.com/v1/getUserData"); List nameValuePairs = new ArrayList(2); nameValuePairs.add(new BasicNameValuePair("id", "1")); nameValuePairs.add(new BasicNameValuePair("value2", "2")); http.setEntity(new UrlEncodedFormEntity(nameValuePairs)); //получаем ответ от сервера String response = (String) httpclient.execute(http, new BasicResponseHandler());
Комментарии
Для того, чтобы работал DefaultHttpClient - нужно установить бибилотеку apache.http. Для этого, в Android Studio:
Ответить1. Открываем Build->Edit Libraries and Dependencies->Dependencies.
2. Нажимаем на плюсик (+)
3. Выбираем Library Dependency
4. В поле поиска пишем org.apache.http и нажимаем "Enter" или жмем на кнопку поиска
Должно найти библиотеку org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2
5. Выбираем ее.
6. Жмем "Ok"
Если хотим тестить на локальном сервере - обращаемся к локальному хосту по ip. К хосту привязываем ip сетевой карты.
ОтветитьПодскажите плиз, как написать POST для https?
Ответить