Чтение HttpURLConnection

Я пытался понять, как читать HttpURLConnection. Согласно этому примеру: http://www.vogella.com/tutorials/AndroidNetworking/article.html следующий код должен работать. Однако readStream никогда не срабатывает, и я не записываю никаких строк.

Я понимаю, что InputStream проходит через буфер и все такое, но для меня логика ломается в методе readStream, а затем в основном пустая строка 'line' и оператор while. Что именно там происходит/должно там происходить, и как я могу это исправить? Кроме того, почему я должен создавать URL-адрес в инструкции Try? Он возвращает необработанное исключение; java.net.MalformedURLException.

Заранее спасибо!

static String SendURL(){
    try {
        URL url = new URL("http://www.google.com/");
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
          readStream (con.getInputStream());
    } catch (Exception e) {
        e.printStackTrace();
    }

    return ("Done");

}

static void readStream(InputStream in) {

    BufferedReader reader = null;

    try {
        reader = new BufferedReader(new InputStreamReader(in));
        String line = "";
        while ((line = reader.readLine()) != null) {
            Log.i("Tag", line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

person ThomQ    schedule 21.03.2014    source источник
comment
Взгляните на DavidWebb. Там вы можете найти библиотеку абстракций для HttpURLConnection и список альтернатив. HttpURLConnection слишком громоздко для использования, просто найдите его в SO, и вы увидите.   -  person hgoebl    schedule 21.03.2014
comment
Выглядит очень многообещающе, сегодня вечером попробую и отчитаюсь. Спасибо!   -  person ThomQ    schedule 21.03.2014


Ответы (2)


В коде, который я разместил в вопросе, есть куча вещей. Вот рабочий пример:

public class GooglePlaces extends AsyncTask {

public InputStream inputStream;


    public GooglePlaces(Context context) {

        String url = "https://www.google.com";


        try {
            HttpRequest httpRequest = requestFactory.buildGetRequest(new GenericUrl(url));
            HttpResponse httpResponse = httpRequest.execute();
            inputStream = httpResponse.getContent();

        } catch (IOException e) {
            e.printStackTrace();
        }


        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        StringBuilder builder = new StringBuilder();

        try {
            for (String line = null; (line = bufferedReader.readLine()) != null;) {
                builder.append(line).append("\n");
                Log.i("GooglePlacesTag", line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
person ThomQ    schedule 25.03.2014

Похоже, вы не подключаете свой HTTPUrlClient, попробуйте con.connect()

person bhawkins    schedule 21.03.2014