开发者社区> 问答> 正文

关于android获取网页源码问题

以下是我从网上找的获取网页源码的 代码 所有包都已经正常导入 但是编译后 程序一运行就崩溃
import 略;

/**
@author Jasonzhou
@since 2013-03-21
@功能 读取网页内容
@说明 获取网页的全部代码后使用jsuop进行处理, 以便得到想要的内容 **/

public class MainActivity extends Activity {
public String url = "http://blog.csdn.net/jasonzhou613/article/details/7905388";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    manageException();// 处理抛出异常
    TextView tv = (TextView) findViewById(R.id.text);
    String myString = null;
    myString = posturl(url);
    // 设置屏幕显示
     Log.i("---网页代码---", "" + myString);
    String html = myString;
    Document doc = Jsoup.parse(html);
    tv.setText(doc.title());

}

/**
 * 获取参数指定的网页代码,将其返回给调用者,由调用者对其解析 返回String
 */
public String posturl(String url) {
    InputStream is = null;
    String result = "";

    try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
    } catch (Exception e) {
        return "Fail to establish http connection!" + e.toString();
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "utf-8"));
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();

        result = sb.toString();
    } catch (Exception e) {
        return "Fail to convert net stream!";
    }

    return result;
}

public void manageException() {
    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
            .detectDiskReads().detectDiskWrites().detectNetwork() // or
                                                                    // .detectAll()
                                                                    // for
                                                                    // all
                                                                    // detectable
                                                                    // problems
            .penaltyLog().build());
    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
            .detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath()
            .build());
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}


}

展开
收起
爵霸 2016-03-11 18:41:10 2554 0
1 条回答
写回答
取消 提交回答
  • 第一:进行耗时任务需要另外开启线程。你过去网页代码需要开线程获取数据后交给handler来处理,或者直接转给主线程。
    第二:httpclient进行数据传输的方式已经被废弃了,要用url.openconnect方法博客里有。

    2019-07-17 18:59:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载