2017-05-14 3 views
-3

웹 페이지의 소스 코드를 다운로드하려고합니다. 하지만 문제는 전체 코드가 표시되지 않고 작은 부분 만 다운로드된다는 것입니다.웹 페이지의 소스 코드 다운로드

public class MainActivity extends AppCompatActivity { 

    public class DownloadTask extends AsyncTask < String , Void , String > 
    { 
     @Override 
     protected String doInBackground(String... params) { 

      String content =""; 
      URL url ; 
      HttpURLConnection conn = null; 
      try { 

       url = new URL (params[0]); 
       conn = (HttpURLConnection)url.openConnection(); 
       InputStream is = conn.getInputStream(); 
       InputStreamReader isr = new InputStreamReader(is); 
       int data = isr.read(); 
       while(data!=-1) 
       { 
        char c = (char) data; 
        content += c; 
        data = isr.read(); 
       } 

       Log.i("The Code is ",content); 
      } 
      catch (Exception e) 
      { 
       e.getStackTrace(); 
      } 
      return content; 
     } 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     String result =" "; 
     DownloadTask DT = new DownloadTask(); 
     try { 

      result = DT.execute("https://www.google.co.in").get(); 

     } 
     catch (Exception e) 
     { 
      e.getStackTrace(); 
     } 
     Log.i("The Code is ",result); 

    } 
} 
+2

일반적으로 쉽지 않습니다. 그 너머에서 [mcve]를주의 깊게 읽으십시오. – GhostCat

+1

문자를 읽고 문자열 연결을 사용하여 새 문자를 추가하는 것은 가능한 가장 느린 해결책입니다. – Henry

답변

0

StreamReader를 닫는 것이 중요합니다. 문제는 아니지만 좋은 습관입니다.

   while(data!=-1) 
       { 
        char c = (char) data; 
        content += c; 
        data = isr.read(); 
       } 
       isr.close(); 
      is.close(); 

첫 번째 페이지는 잘 다운로드되지만 사용자가 문제를 반복해서로드하려고하면 문제가 발생할 수 있습니다. 내가 말했듯이 이것은 수정이 아닐 수도 있지만 중요합니다. 희망이 사람을 도움이됩니다.

+0

답장을 보내 주셔서 감사합니다 !! 그러나 문제는 여전히 있습니다 .. –

+0

로그에 전체 웹 페이지가 다운로드 중입니까? 귀하의 코드에 아무런 문제가 없습니다. 너는 뭔가를 놓칠지도 모른다. 또한 @Henry가 BufferReader를 사용하는 것이 더 낫다고 제안 했으므로 프로그램 효율성이 높아졌습니다. –

+0

로그에도 불완전한 코드가 표시됩니다 !! –

관련 문제