2017-07-25 10 views
-1

状況: URLを解析して本文タグ間の情報を取得し、Androidテキストビューで設定しようとしています。Android Jsoupすべての本文テキストのURLを解析する

問題:何かが...間違っているおよび/または行方不明である

コード:

package jsouptutorial.androidbegin.com.jsouptutorial; 
 
    import android.support.v7.app.AppCompatActivity; 
 
    import android.os.Bundle; 
 
    import android.widget.TextView; 
 
    import org.jsoup.Jsoup; 
 
    import org.jsoup.nodes.Document; 
 
    import org.jsoup.nodes.Element; 
 
    import org.jsoup.nodes.TextNode; 
 
    import org.jsoup.select.Elements; 
 
    import java.io.File; 
 
    import java.io.IOException; 
 
    public class MainActivity extends AppCompatActivity { 
 

 
     @Override 
 
     protected void onCreate(Bundle savedInstanceState) { 
 
      super.onCreate(savedInstanceState); 
 
      setContentView(R.layout.activity_main); 
 
      TextView textOut = (TextView)findViewById(R.id.rootTxtView); 
 

 

 
//------------------Something went wrong here------------------------------- 
 
      Document doc; 
 
      try { 
 
       //doc = Jsoup.connect("https://stackoverflow.com/questions/45311629/android-jsoup-parsing-url-for-all-body-text").get(); 
 
       doc = Jsoup.parse(new File("https://stackoverflow.com/questions/45311629/android-jsoup-parsing-url-for-all-body-text"), "UTF-8"); 
 

 
       Elements desc = doc.select("a.body"); 
 

 
       textOut.setText((CharSequence) desc); //Setting textView to a String 
 

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

 

 
     } 
 
    }

+0

をスローしますので、あなたがメインスレッドからのネットワーク要求をしようとしている。またdoc.body()

を使用しますデバッガの使い方を学ぶ必要があるようです。いくつかの補完的なデバッグ手法を手伝ってください。 –

+0

あなたはエラーを発見するためにlogcatを読むべきです –

答えて

1

あなたがここでの問題のカップルが持っています最初に0を作成しようとしていますオブジェクトをURLから取得すると、IOExceptionがスローされます。あなたは、代わりに次の問題は、あなたの要素の選択doc.select("a.body")ある

Document doc = Jsoup.connect("https://stackoverflow.com/questions/45311629/android-jsoup-parsing-url-for-all-body-text").get(); 

URLからドキュメントを取得するためにJSoupメソッドを使用します。これはボディのクラスですべてのアンカータグ <a>を選択しようとしていますが、何もありません。 cricket_007で述べたように体を取得するにはちょうどそれが、この周り NetworkOnMainThreadException最も簡単な方法は、AsyncTaskでそれを実行することになります see this question for details.

+1

第3の問題は、メインスレッドのネットワーク要求です –

+0

@ cricket_007はい、これはアンドロイドだったことを忘れています。上に追加します –

関連する問題