android java html字符串,java – Android:将网页的HTML读入字符串

我是

Android开发的新手,我正在尝试阅读网页的HTML并将其存储在下面的字符串(“myHTML”)中,并将其显示在应用程序上.

但是,只要运行,应用程序就会结束.我一直在网上搜索这个原因,并且发现一些文章说由于其“昂贵”的性质,无法在应用程序的主UI线程中完成互联网访问.有没有人遇到过类似的问题?我会很感激有关这个问题的任何进一步信息…在初学者级别:)

这是程序:

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.widget.TextView;

import java.util.ArrayList;

import java.util.regex.*;

import java.net.*;

import java.io.*;

/*

* Gets A webpage's HTML and saves to a string

*/

public String WebPageToHTML(String Webpage) throws IOException{

URL x = new URL(Webpage);

BufferedReader in = new BufferedReader(

new InputStreamReader(

x.openStream()));

String y = "";

String inputLine;

while ((inputLine = in.readLine()) != null)

y = y.concat(inputLine);

in.close();

return y;

}

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

TextView tv = new TextView(this);

String FirstAddress = "http://www.google.com";

String myHTML = "";

try {

myHTML = WebPageToHTML(FirstAddress);

} catch (IOException e) {

e.printStackTrace();

}

tv.setText(myHTML);

setContentView(tv);

}

logcat的:

12-29 14:41:44.441: E/AndroidRuntime(540): java.lang.RuntimeException: Unable to start activity ComponentInfo{my.first.app/my.first.app.WhatHaveIMissedActivity}: android.os.NetworkOnMainThreadException

12-29 14:41:44.441: E/AndroidRuntime(540): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)

12-29 14:41:44.441: E/AndroidRuntime(540): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)

12-29 14:41:44.441: E/AndroidRuntime(540): at android.app.ActivityThread.access$600(ActivityThread.java:123)

12-29 14:41:44.441: E/AndroidRuntime(540): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)

12-29 14:41:44.441: E/AndroidRuntime(540): at android.os.Handler.dispatchMessage(Handler.java:99)

12-29 14:41:44.441: E/AndroidRuntime(540): at android.os.Looper.loop(Looper.java:137)

12-29 14:41:44.441: E/AndroidRuntime(540): at android.app.ActivityThread.main(ActivityThread.java:4424)

12-29 14:41:44.441: E/AndroidRuntime(540): at java.lang.reflect.Method.invokeNative(Native Method)

12-29 14:41:44.441: E/AndroidRuntime(540): at java.lang.reflect.Method.invoke(Method.java:511)

12-29 14:41:44.441: E/AndroidRuntime(540): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)

12-29 14:41:44.441: E/AndroidRuntime(540): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)

12-29 14:41:44.441: E/AndroidRuntime(540): at dalvik.system.NativeStart.main(Native Method)

12-29 14:41:44.441: E/AndroidRuntime(540): Caused by: android.os.NetworkOnMainThreadException

12-29 14:41:44.441: E/AndroidRuntime(540): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)

12-29 14:41:44.441: E/AndroidRuntime(540): at java.net.InetAddress.lookupHostByName(InetAddress.java:391)

12-29 14:41:44.441: E/AndroidRuntime(540): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)

12-29 14:41:44.441: E/AndroidRuntime(540): at java.net.InetAddress.getAllByName(InetAddress.java:220)

12-29 14:41:44.441: E/AndroidRuntime(540): at libcore.net.http.HttpConnection.(HttpConnection.java:71)

12-29 14:41:44.441: E/AndroidRuntime(540): at libcore.net.http.HttpConnection.(HttpConnection.java:50)

12-29 14:41:44.441: E/AndroidRuntime(540): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)

12-29 14:41:44.441: E/AndroidRuntime(540): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)

12-29 14:41:44.441: E/AndroidRuntime(540): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)

12-29 14:41:44.441: E/AndroidRuntime(540): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)

12-29 14:41:44.441: E/AndroidRuntime(540): at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)

12-29 14:41:44.441: E/AndroidRuntime(540): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)

12-29 14:41:44.441: E/AndroidRuntime(540): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)

12-29 14:41:44.441: E/AndroidRuntime(540): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)

12-29 14:41:44.441: E/AndroidRuntime(540): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)

12-29 14:41:44.441: E/AndroidRuntime(540): at java.net.URL.openStream(URL.java:462)

12-29 14:41:44.441: E/AndroidRuntime(540): at my.first.app.WhatHaveIMissedActivity.WebPageToHTML(WhatHaveIMissedActivity.java:71)

12-29 14:41:44.441: E/AndroidRuntime(540): at my.first.app.WhatHaveIMissedActivity.onCreate(WhatHaveIMissedActivity.java:99)

12-29 14:41:44.441: E/AndroidRuntime(540): at android.app.Activity.performCreate(Activity.java:4465)

12-29 14:41:44.441: E/AndroidRuntime(540): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)

12-29 14:41:44.441: E/AndroidRuntime(540): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)

12-29 14:41:44.441: E/AndroidRuntime(540): ... 11 more

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值