Нужно получить результат 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();
Комментариев нет:
Отправить комментарий