Страницы

Поиск по вопросам

среда, 6 марта 2019 г.

Работа с HttpURLConnection в Android, полечение информации по GET

Нужно получить результат GET запроса в Android и вернуть значение из метода. Решено! Всем спасибо за участие!
public void sayHello(View view)throws IOException { Thread httpThread = new Thread(new Runnable() { public void run() { String mybla = sendGet(); } }); httpThread.start(); } private String sendGet(){ try{ String mystr = "http://www.pravda.com.ua"; URL obj = new URL(mystr); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("GET"); con.setRequestProperty("User-Agent", "Mozilla/5.0"); con.setRequestProperty("Accept-Charset", "UTF-8"); InputStream response = con.getInputStream(); Scanner s = new Scanner(response).useDelimiter("\\A"); String result = s.hasNext() ? s.next() : ""; return result; } catch (Exception e) { return e.toString(); } }


Ответ

Все делаете правильно. Для того, чтобы прочитать поток и получить из него String, можете воспользоваться, например, библиотекой Apache commons IOUtils (офф. сайт). С её помощью:
String result = IOUtils.toString(inputStream);
Если предпочетаете способ без сторонних библиотек (что я приветствую, потому что это позволяет узнать что-то новое о языке, в котором вы новичек), то делайте например так:
Scanner s = new Scanner(inputStream).useDelimiter("\\A"); String result = s.hasNext() ? s.next() : "";
UPD
Заверните в
new Thread(new Runnable() { public void run() { //вызовите ваш код для сетевого запроса } }).start();
Когда ваш запрос вернул результат внутри вашего Thread, чтобы поменять элемент интерфейса вам понадобится сделать это из UI-потока. Для этого используйте Context.runOnUiThread();

Комментариев нет:

Отправить комментарий