android访问网页,Android 中访问网页数据/内容

别忘了权限:

代码:

public class WebClient {

private String mAddress = "";

private String mParams = "";

public WebClient(String address)

{

mAddress = address;

}

public void addParam(String name, String value)

{

if (!mParams.equals(""))

{

mParams += "&";

}

try {

mParams += name + "=" + URLEncoder.encode(value, "UTF-8");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

public WebClientResult post() {

WebClientResult result = new WebClientResult();

try {

URL url = new URL(mAddress);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

//conn.setConnectTimeout(3000);

//conn.setDoOutput(true);

//conn.setDoInput(true);

//conn.setUseCaches(false);

conn.setRequestMethod("POST");

byte[] data = mParams.getBytes("utf-8");

//conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

conn.setRequestProperty("Content-Length", String.valueOf(data.length));

OutputStream outputStream = conn.getOutputStream();

outputStream.write(data);

int status = conn.getResponseCode();

result.setStatus(status);

if (status == 200) {

result.setHtml(StreamHelper.toString(conn.getInputStream(), true));

} else {

result.setHtml(StreamHelper.toString(conn.getErrorStream(), true));

}

outputStream.close();

conn.disconnect();

}

catch (IOException e)

{

result.setStatus(-1);

result.setHtml("WebClient error.");

e.printStackTrace();

}

return result;

}

}

public class WebClientResult

{

private int mStatus = 0;

private String mHtml = "";

public int getStatus() {

return mStatus;

}

public String getHtml(){

return mHtml;

}

public void setStatus(int status) {

this.mStatus = status;

}

public void setHtml(String html) {

this.mHtml = html;

}

}

如上代码,OutputStream 负责要上传的内容,InputStream 负责获取的内容。注意使用 getInputStream() 要求 status 为 200,否则会报 FileNotFoundException。

代码就这些,不过直接在主线程中访问是不行的,因为访问网络是耗时的操作,Android 为了防止界面卡,从 4.0 开始,就不允许在主线程中访问网络,所以我们得用线程。

同时,当我们用了线程,试图将获取的 HTML 更新在某个控件上时,会出错,因为 Android 又不允许在线程中更新界面,解决办法是用 Handler。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值