别忘了权限:

代码:

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。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐