2013-11-22 4 views
-1

Я пытаюсь разобрать по следующей ссылке:Ошибка разбора HTML в Android с JSOUP

http://rate-exchange.appspot.com/currency?from=USD&to=EUR&q=1

Как вы можете видеть, что это очень простая страница, и я просто пытаюсь извлечь текст на странице с JSoup. Моя текущая реализация возвращает неверный HTML, и я не уверен, почему. Вот мой код:

public class RetreiveCurrencies extends AsyncTask<String, Void, String>{ 

    @Override 
    protected String doInBackground(String... arg0) { 
     Document html = null; 
     try { 
      Log.i("wbbug",arg0[0]); 
      html = Jsoup.parse((arg0[0])); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     Log.i("wbbug",html.toString()); 
     return null; 
    } 

} 

Что называется с:

AsyncTask<String, Void, String> rc = new RetreiveCurrencies().execute("http://rate-exchange.appspot.com/currency?from=USD&to=EUR&q=1");

Однако, вместо того, чтобы вернуться правильный HTML с текстом вы видите при нажатии на ссылку, мой Log.i возвращает:

<html> 
    <head></head> 
    <body> 
    http://rate-exchange.appspot.com/currency?from=USD&to=EUR&q=1 
    </body> 
</html> 

Что я делаю неправильно и как я могу извлечь текст, который вы видите при нажатии ссылки?

ответ

1

Jsoup.parse() принимает аргумент String, поэтому в настоящее время ваш код анализирует URL-адрес, как если бы это был строковый код html.

Для разбора документа с удаленного URL, вы должны использовать Jsoup.connect(), например:

Document doc = Jsoup.connect("URL").get(); 

Для вашего конкретного примера (который, как представляется, возвращение JSON, а не HTML):

Document doc = Jsoup.connect("http://rate-exchange.appspot.com/currency?from=USD&to=EUR&q=1").ignoreContentType(true).get(); 
System.out.println(doc.text()); 

Вывод:

{"to": "EUR", "rate": 0.73757499999999998, "from": "USD", "v": 0.73757499999999998} 

Причина, по которой я должен был добавить ignoreContentType(true), - это потому что иначе он выбрасывает UnsupportedMimeTypeException.

Смежные вопросы