2016-04-12 6 views
0

私は、DOMパーザを使用してページのソースコードを取得するための文字列のHTMLソースコードを取得するプロジェクトに取り組んでいます。Android APIを使用してHTML文字列を取得する23

私は、Android API 23アンドロイドにURLを呼び出すことにより、Webページのソースコードを取得するためのアプローチがどうなるか、アンドロイドで同じことを実現したいです。

は何アンドロイドでそれを行うための最善の方法でしょうか?あなたのactvity

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

ののonCreateで

+0

標準のhttpリクエストをAndroidで作成します。あなたはこれにボレーを使用することができます。 – crashOveride

答えて

0
class GetWebPage extends AsyncTask<String, Void, String>{ 

     @Override 
     protected String doInBackground(String... params) { 
      doRequest(); 
      return null; 
     } 
    } 
    public void doRequest() { 
     String link = "http://www.google.com"; 
     URL url = null; 
     try { 
      url = new URL(link); 
      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.connect(); 
      InputStream is = conn.getInputStream(); 
      BufferedReader reader =new BufferedReader(new InputStreamReader(is, "UTF-8")); 
      String webPage = "",data=""; 

      while ((data = reader.readLine()) != null){ 
       webPage += data + "\n"; 
      } 
      Log.d("goog",webPage); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch(Exception ex) { 
      ex.printStackTrace(); 
     } 


    } 

、今logcatを確認してください。タグGOOG とAndroidManifestにインターネットアクセス権を追加することを忘れないでください:

<uses-permission android:name="android.permission.INTERNET" /> 
+0

は、私はいつもcatchブロック:( – Gabri

+0

キャッチ(例外例){ex.printstacktrace();}実行し、コード、Androidのメーカーは、try/catchブロックを置くために私を強制的に実施し、そしてその理由を知りません。ログを参照してくださいが私を与えますログ。 – crashOveride

+0

あなたは、メインスレッド上でネットワーク呼び出しをやっていますか? – crashOveride

0

私はあなたがこのようなWebページのHTML得ることができるので、あなたは、このJavaライブラリJsoupを使用することをお勧め:

Document doc = Jsoup.connect("http://en.wikipedia.org/").get(); 

ただし、doRequestからAsyncTaskに電話をかけて、通話中にユーザーインターフェイスをブロックしないようにしてください。

と、ファイルの一覧のAndroidに追加することを忘れないでください:

<uses-permission android:name="android.permission.INTERNET" />


それ以外の場合は、HTTPのこの種は、ウェブ上でAndroid上でasynchonously呼び出しを管理するためのライブラリがたくさんあります。有名なのはAndroid Asynchronous Http Clientです(あなたはいつもアンドロイドマニフェストエントリを覚えておくべきです)。

関連する問題