活动撒谎飞机棵 2016-03-09 09:38 采纳率: 40%
浏览 1495
已采纳

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;
}

}

  • 写回答

3条回答

  • mnlin 2016-03-09 10:07
    关注

    第一:进行耗时任务需要另外开启线程。你过去网页代码需要开线程获取数据后交给handler来处理,或者直接转给主线程。
    第二:httpclient进行数据传输的方式已经被废弃了,要用url.openconnect方法博客里有。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行