活动撒谎飞机棵 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条)

报告相同问题?

悬赏问题

  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败