2013-07-30 4 views
-1

jsoup를 사용하여 특정 속성을 기반으로 링크를 추출하려고합니다. 코드는 간단한 자바 프로그램으로 실행할 때 잘 작동하지만 Android에서 실행하면 결과가 표시되지 않습니다. 나는 안드로이드 AsyncTask를 내부에서 실행할 때 bbc.co.uk/news 에 RSS 파일에 대한 링크를 찾을 수 있지만, 간단한 자바 코드로jsoup이 android에서 HTML을 올바르게 구문 분석하지 않습니다.

List<String> feeds = new ArrayList<>(); 
try { 
    Document doc = Jsoup.connect("http://www.bbc.co.uk/news/").get(); 
    Elements links = doc.getElementsByTag("link"); 

    String type = "application/rss+xml"; 

    for (Element link : links) { 
     if (link.attr("type").equals(type)) { 
      //System.out.println(link.attr("href")); 
      feeds.add(link.attr("href")); 
     } 
    } 

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

for(String item : feeds){ 
    System.out.println(item); 
} 

, 다음과 같이 내가 실행하고 코드입니다 결과가 없습니다. 설명이 있으십니까?

+0

응용 프로그램을합니까 아래처럼 기본 userAgent을 인터넷 권한이 무시하려고? – dymmeh

+0

예 인터넷 사용 권한이 있습니다 – user2635155

+0

비동기 작업을 올바르게 사용하지 않을 가능성이 있습니다. 비동기 작업 코드를 붙여 넣으십시오. –

답변

1

User-Agent의 문제인 것 같습니다.

Document doc = Jsoup.connect("http://www.bbc.co.uk/news/") 
      .userAgent("Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36") 
      .get(); 
0

대부분 소켓 시간 초과가 발생할 수 있습니다. 시간 초과 값을 늘리십시오.

Jsoup.connect(url).timeout(10000).get(); 

java.net.SocketTimeoutException의 스택 추적을 확인하십시오.

+0

나는 그것을 시도했지만 아무런 개선이 없었으며 예외도 발생했다. – user2635155

+0

나는 뭔가 다른 것을 시도해 보았습니다. "application/rss + xml"링크 만 추출하는 대신 모든 링크를 추출하려고했습니다. 나는 이상한 결과를 얻었습니다 : 평범한 자바 프로그램은 하나의 application/rss + xml을 포함한 모든 링크를 반환합니다. 안드로이드 버전도 여러 링크를 반환하지만 이번에는 application/rss + xml이 없습니다! – user2635155

관련 문제