Неизвестное исключение хоста, Apache HttpClient, Java, wunderground

Я застрял на этой конкретной дилемме в течение некоторого времени, я просмотрел сайт и нашел некоторую помощь, но не по моей конкретной проблеме. Я пытаюсь подключиться к веб-сайту, чтобы извлечь из него данные JSON. Хост - это то, в чем я не уверен:

DefaultHttpClient client = new DefaultHttpClient();
HttpHost targetHost = new HttpHost("www.wunderground.com", 80);
    HttpGet httpGet = new HttpGet(urllink); // urllink is "api.wunderground.com/api/my_key/conditions/forecast/hourly/alerts/q/32256.json"
    httpGet.setHeader("Accept", "application/json");
    httpGet.setHeader("Content-type", "application/json");

    HttpResponse response = client.execute(targetHost, httpGet);

    HttpEntity entity = response.getEntity();
    InputStream instream = entity.getContent();
    BufferedReader reader = new BufferedReader(new InputStreamReader(instream));

    StringBuilder stringBuilder = new StringBuilder();
    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            stringBuilder.append(line + "\n");
        }
    } catch (Exception e) {
        // print stacktrace
        return null;
    } finally {
        try {
            instream.close();
        } catch (Exception e) {
            // print stacktrace
            return null;
        }
    }

    return stringBuilder.toString();

Хост может быть либо www.wunderground.com, либо api.wunderground.com, но когда я пробую любой из них, я получаю Unknown host exception.

Я нашел ошибку. Дело в том, что у меня не было разрешения в манифесте Android!


person Rapitor    schedule 09.04.2013    source источник
comment
Можете ли вы отправить запрос ping? Возможно, что-то не так с вашей локальной установкой.   -  person sk2212    schedule 09.04.2013
comment
хм, похоже, что это может быть что-то. Я могу получить доступ к веб-сайту нормально. но пинг возвращается на неопределенный срок   -  person Rapitor    schedule 09.04.2013
comment
ваш код отлично работает для меня с небольшим дополнением: ваша urllink должна начинаться с протокола: api.wunderground.com/api/Your_Key/features/settings/q/. Кроме того, я удалил ненужный targetHost и заменил client.execute(targetHost, httpGet); просто client.execute(httpGet);   -  person Alex    schedule 09.04.2013
comment
Я все еще получаю неизвестный хост. Я предполагаю, что это означает, что я за брандмауэром или прокси? решение?   -  person Rapitor    schedule 09.04.2013


Ответы (1)


Вызов должен быть похож на:

http://api.wunderground.com/api/Ваш_Ключ/условия/q/CA/San_Francisco.json

или, как указано в API,

GET http://api.wunderground.com/api/Your_Key/features/settings/q/query.format
person BobTheBuilder    schedule 09.04.2013
comment
правильно, URL-адрес это, извините. добавлю в основной пост - person Rapitor; 09.04.2013
comment
Так это отвечает на ваш вопрос? - person BobTheBuilder; 09.04.2013
comment
это не так, проблема все еще неизвестна хосту - person Rapitor; 09.04.2013
comment
Вы пытались использовать этот адрес: api.wunderground.com/api /Ваш_Ключ/условия/q/CA/? - person BobTheBuilder; 09.04.2013
comment
да, все еще неизвестное исключение хоста - person Rapitor; 09.04.2013
comment
Попробуйте получить доступ к точному адресу с помощью браузера. Он может сказать вам, если вы ошибаетесь. - person BobTheBuilder; 09.04.2013