我需要使用Jsoup从网站显示html的帮助

时间:2019-11-20 02:49:53

标签: html parsing jsoup

使用Java编写android应用程序进行编码时非常陌生。至此,我已经将代码包括在内。此时,我只是试图从网站获取HTML。我一直在搜寻到这一点的方式。我的清单中确实有<uses-permission android:name="android.permission.INTERNET" />。我调用代码以在oncreate事件(新的URLParser)中获取html。最初,我试图在logcat中查看html,但onPostExecute事件中的代码仍然存在。程序以这种方式运行良好,但是html并未显示在logcat的详细部分中。因此,我向该应用程序添加了一个临时按钮和文本视图。该按钮的onClick设置为调用“ showHTML”。应用程序加载完毕,当我按下按钮时,它崩溃了。所以我似乎看不到logcat中的html或按下按钮后的textview。

package com.example.brewerycruiser;

    import androidx.appcompat.app.AppCompatActivity;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import java.io.IOException;
    import android.util.Log;
    import android.view.View;
    import android.widget.TextView;


    public class MainActivity extends AppCompatActivity {

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

        }

        public void showHTML (View view) {
            TextView HTMLview =
                    view.getRootView().findViewById(R.id.textView);
            HTMLview.setText(doc.toString());

        }

        Document doc = null;

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


                try {
                    doc =  Jsoup.connect("https://www.coloradobrewerylist.com/brewery/").userAgent("Mozilla/5.0").get();


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


                return null;
            }

            protected void onPostExecute(Void result) {
                Log.v("DATA", doc.toString());

            }

        }

    }

错误日志如下:

11-19 18:09:32.779 18293-18293/com.example.brewerycruiser E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.brewerycruiser, PID: 18293
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402)
        at android.view.View.performClick(View.java:5225)
        at android.view.View$PerformClick.run(View.java:21195)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5451)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
        at android.view.View.performClick(View.java:5225) 
        at android.view.View$PerformClick.run(View.java:21195) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5451) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.jsoup.nodes.Document.toString()' on a null object reference
        at com.example.brewerycruiser.MainActivity.showHTML(MainActivity.java:27)
        at java.lang.reflect.Method.invoke(Native Method) 
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) 
        at android.view.View.performClick(View.java:5225) 
        at android.view.View$PerformClick.run(View.java:21195) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5451) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

非常感谢您的帮助, 谢谢

0 个答案:

没有答案
相关问题