Страницы

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

воскресенье, 12 января 2020 г.

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

#java #android #http #get #httpurlconnection


Нужно получить результат 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();
        }
    }

    


Ответы

Ответ 1



Все делаете правильно. Для того, чтобы прочитать поток и получить из него 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();.

Ответ 2



Код с использованием либы OkHttp OkHttpClient client = new OkHttpClient.Builder().build(); String url = ...; Request.Builder request = new Request.Builder(); request.url(url); request.get(); Response response = client.newCall(request.build()).execute(); String response = response.body().string(); System.out.println(response ); Надо помнить, что на андроид запросы в сеть можно с API14 делать только вне UI потока. Например через AsynkTask, Thread etc

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

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