2013-05-15 5 views
1

정적 인 블로그 페이지에서 html을 다운로드하여 관련 데이터를 가져 와서 사용할 수 있습니다. 비동기 프로 시저의 경우 robospice library을 사용하고 있습니다.RoboSpice를 사용하여 html 소스를 다운로드하는 방법은 무엇입니까?

것, 즉 내가 전체 HTML 소스를 다운로드하는 데 사용해야 요청

<?xml version="1.0" encoding="UTF-8"?> 

, 나는 단지 HTML의 첫 번째 라인을 얻을 SimpleTextRequest를 사용하여 무엇입니까? 샘플에서 비슷한 것을 찾지 못했습니다. 그리고 "robospice"를 검색하는 것이 대부분 소스 코드로 이어지기 때문에이 라이브러리에 대한 자습서가 거의없는 것처럼 보입니다.

UPDATE :

public class HtmlRequest extends SpiceRequest<String> { 

    private static String reqUrl; 

    public HtmlRequest(String url) { 
     super(String.class); 
     reqUrl = url; 
     aLog.d("HtmlRequest.HtmlRequest url : " + url); 
    } 

    @Override 
    public String loadDataFromNetwork() throws Exception { 
     String html = ""; 

     HttpClient httpClient = new DefaultHttpClient(); 
     StringBuilder builder = new StringBuilder(); 
     HttpGet get = new HttpGet(reqUrl); 
     HttpResponse response = httpClient.execute(get); 
     StatusLine statusLine = response.getStatusLine(); 
     int statusCode = statusLine.getStatusCode(); 
     aLog.d("HtmlRequest.loadDataFromNetwork statusCode : " + statusCode); 
     if (statusCode == 200) { 
      /* 
      * Si todo fue ok, montamos la String con el HTML 
      */ 
      HttpEntity entity = response.getEntity(); 
      InputStream content = entity.getContent(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(content)); 
      String line; 
      while ((line = reader.readLine()) != null) { 
       aLog.d("HtmlRequest.loadDataFromNetwork line : " + line); 
       builder.append(line); 
      } 
      html = builder.toString(); 
      aLog.d("HtmlRequest.loadDataFromNetwork html : " + html); 
     } 

     httpClient.getConnectionManager().shutdown(); 
     return html; 
    } 

} 

그런 다음 내 활동에 나는

spiceManager.execute(htmlRequest, "text", DurationInMillis.NEVER, new StaticItemRequestListener()); 

이 그럼에도 불구하고 나는에 설정 한 로그를 전혀 얻을 : 첫 번째 대답 Inspiredby,이 정의 spicerequest을 만들었습니다 내 사용자 지정 요청, 생성자 메서드에서 하나.

사실 : htmlRequest가 실행되고 있지는 않지만 여전히 xml 헤더가 있습니다. 나는 너무 틀린 일을해야하고 아직 그것을 볼 수 없다. ...

답변

2

html 대신 xml 파일의 헤더를 얻는 것이 이상하다. `난 그냥 URL을 http://www.sevilladirecto.com/telefonos-de-interes/에 그것을 시도했습니다

public class ExampleRequest extends SpiceRequest<String> { 

    public ExampleRequest() { 
     super(String.class); 
    } 

    @Override 
    public String loadDataFromNetwork() throws Exception { 

     String url = "your website url"; 

     if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { 
      System.setProperty("http.keepAlive", "false"); 
     } 

     HttpURLConnection urlConnection = (HttpURLConnection) new URL(url) 
      .openConnection(); 
     urlConnection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");  
     urlConnection.setRequestProperty("Content-Type", "text/html");    
     String result = IOUtils.toString(urlConnection.getInputStream()); 
     urlConnection.disconnect(); 

     return result; 
    } 
} 
+0

와 나는 같은 결과 를 얻을 : 서버에 HTML 버전을 물어보십시오 ' – Frank

+0

다른 헤더를 추가하려고합니다. 해당 페이지를 방문 할 때 브라우저에서 보낸 헤더를 확인하여 요청에 추가하십시오. – rciovati

+0

나는 동일한 spicemanager와 동일한 활동 2 개의 다른 요청을 사용했다. 두 번째 것은 항상 저에게 결과를위한 우스운 표제를 줄 것입니다. 한 요청 만 시작하면 괜찮습니다. – Frank

관련 문제