【发布时间】:2019-09-21 19:20:53
【问题描述】:
我是 java 和 android 的新手,作为我正在学习的课程的一部分,我必须将网页的内容下载到日志中。但是我无法让它工作。我收到错误: 无法启动活动 ComponentInfo 空指针异常
我使用的是 Android Studio 3.5
谢谢。
我已经尝试根据课程代码检查代码并且它匹配。
package com.android.guessthecelebrity;
import androidx.appcompat.app.AppCompatActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.concurrent.ExecutionException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MainActivity extends AppCompatActivity {
public class downloadTask extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... urls) {
String result = "";
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection)url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while (data != -1) {
char current = (char)data;
result += current;
data= reader.read();
}
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
downloadTask task = new downloadTask();
String result = null;
try {
result = task.execute("http://www.posh24.se/kandisar").get();
String [] splitResult = result.split("<div class=\"sidebarContainer\">");
Pattern p = Pattern.compile("src=\"(.*?)\"");
Matcher m = p.matcher(splitResult[0]);// [0] refers to the part before the split point
while (m.find()) {
System.out.println(m.group(1));
}
p = Pattern.compile("alt=\"(.*?)\"");
m = p.matcher(splitResult[0]);// [0] refers to the part before the split point
System.out.println(m.group(1));
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
我希望网页内容返回到日志
【问题讨论】:
-
告诉我们你是如何调试它的以及你在调试过程中观察到了什么。
标签: java android-asynctask httpsurlconnection