最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Android 怎么用HttpURLConnection访问网络?
时间:2022-06-25 23:03:56 编辑:袖梨 来源:一聚教程网
本文为大家介绍了Android 用HttpURLConnection访问网络的教程,不会的朋友快来看看吧!
一、 HttpURLConnection以GET方式访问网络:
HttpURLConnection connection = null;
try {
URL url = new URL("https://www.x**x*x.com/");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");//设置访问方式为“GET”
connection.setConnectTimeout(8000);//设置连接服务器超时时间为8秒
connection.setReadTimeout(8000);//设置读取服务器数据超时时间为8秒
if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) {
//从服务器获取响应并把响应数据转为字符串打印
InputStream in = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder response = new StringBuilder();
String line;
while (null != (line = reader.readLine())) {
response.append(line);
}
Log.d(TAG, response.toString());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null!= connection) {
connection.disconnect();
}
}
二、 HttpURLConnection以POST方式访问网络:
HttpURLConnection connection = null;
try{
URL url = new URL("https://www.x**x*x.com/");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
connection.setDoOutput(true);// 使用 URL 连接进行输出
connection.setDoInput(true);// 使用 URL 连接进行输入
connection.setUseCaches(false);// 忽略缓存
// 建立输出流,并写入数据
OutputStream outputStream = connection.getOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
dataOutputStream.writeBytes("username=admin&password=888888");
dataOutputStream.close();
if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) {
// 当正确响应时处理数据
StringBuffer response = new StringBuffer();
String line;
BufferedReader responseReader =
new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
// 处理响应流,必须与服务器响应流输出的编码一致
while (null != (line = responseReader.readLine())) {
response.append(line);
}
responseReader.close();
Log.d(TAG, response.toString());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null!= connection) {
connection.disconnect();
}
}
注意:
1. HTTP访问是不允许在主线程进行的,否则会报错。因此上面的操作应该在新线程中进行。
2. 一般要用HttpURLConnection.getResponseCode() == 200来判断是否正常响应。为true则正常响应。
3. 在Android 2.2及以下版本,使用的是HttpClient,Android 2.3及以上版本,使用的是HttpURLConnection,而Android5.1之后废弃了HttpClient的相关Api。因此HttpClient用法不再进行研究。
4. 以POST方式提交数据时,每条数据要以键值对的方式提交,各条数据之间以&隔开。比如上面的代码中dataOutputStream.writeBytes(“username=admin&password=888888”);
5. 上面用到了StringBuilder和StringBuffer,没有什么特别用意,只是顺便用下。StringBuilder在单线程下比StringBuffer更高效,但不是线程安全的。
相关文章
- dnf神界版本蓝拳装备搭配毕业攻略 神界版本蓝拳装备怎么选 11-29
- 流放之路S24速刷简单策略选择推荐 11-29
- 魔兽世界乌龟服防骑a怪一键宏指令分享 11-29
- 创世秩序全地图资料汇总 全地图区域中文名字对照 11-29
- 播种委员会全角色解锁攻略 全人物解锁位置详解 11-29
- 魔兽世界N服官网地址分享 Everlook服入口位置2024 11-29