Как заменить на локальную ссылку? Android

1

Я разбираю XML файл.
Один из методов приведен ниже:

public static String getXML(){   
        String line = null;

        try {

            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost("http://p-xr.com/xml/");

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            line = EntityUtils.toString(httpEntity);

        } catch (UnsupportedEncodingException e) {
            line = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
        } catch (MalformedURLException e) {
            line = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
        } catch (IOException e) {
            line = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
        }

        return line;

}

Здесь я хочу заменить

HttpPost httpPost = new HttpPost("http://p-xr.com/xml/");

от

HttpPost httpPost = new HttpPost("http://127.0.0.1/myfile.xml");

Поскольку я могу просматривать http://127.0.0.1/myfile.xml в своем браузере. Но когда я пишу этот адрес в код выше, он работает. Зачем? Мой проект требует, чтобы http-метод имел доступ к файлу xml.

Теги:
http
localhost

4 ответа

1
Лучший ответ

В этом случае используйте 10.0.2.2, проверьте сеть эмуляторов.

  • 0
    Работает нормально. Но результаты отображаются в течение очень короткого времени и появляется ошибка принудительного закрытия. Но когда я заменяю http://10.0.2.2/myfile.xml на http://p-xr.com/xml/ никакая сила закрытия не появляется. Спасибо!
  • 0
    @captainpirate, рад слышать, что это помогает :)
2

В эмуляторе localhost - это сам эмулятор, а не ваша система, запускающая эмулятор. Так что это не сработает.

Вместо этого используйте 10.0.2.2.

1

Если вы хотите сделать это с помощью устройства Android:

Вы можете узнать IP-адрес своего компьютера, используя ifconfig на Mac или Linux или ipconfig в Windows.

Затем вы можете заменить p -xr.com/127.0.0.1 на этот IP-адрес.

Вам нужно убедиться, что на вашем компьютере не установлен брандмауэр, и если это так, вам нужно разрешить доступ к вашему устройству Android, чтобы связаться с вашим местным HTTP-сервером.

  • 0
    Спасибо всем парням за ответ. Это работает gr8, у меня болит голова в течение 2 дней.
1

В эмуляторе есть некоторые специально определенные псевдонимы адресов, используемые для доступа к сетям вне самого эмулятора.

Для доступа к локальному хосту в системе, на которой запущен эмулятор (то есть хост-система), используйте 10.0.2.2

Ссылка здесь:

http://developer.android.com/guide/developing/devices/emulator.html#emulatornetworking

Ещё вопросы

Сообщество Overcoder
Наверх
Меню