【Andorid网络技术】HttpURLConnection对象使用
2011-04-06 18:46
387 查看
1.
从
Internet
获取网页
发送请求,
将网页以流的形式读回来
.
Java
代码
1)
创建一个
URL
对象
:URL url = new URL("http://www.sohu.com");
2)
利用
HttpURLConnection
对象从网络中获取网页数据
:HttpURLConnection conn = (HttpURLConnection) url.openConnection();
3)
设置连接超时
:conn.setConnectTimeout(6* 1000);
4)
对响应码进行判断
:if (conn.getResponseCode() != 200) throw new RuntimeException("
请求
url
失败
");
5)
得到网络返回的输入流
:InputStream is = conn.getInputStream();
6)String result = readData(is, "GBK");
conn.disconnect();
1)
创建一个
URL
对象
:URL url = new URL("http://www.sohu.com");
2)
利用
HttpURLConnection
对象从网络中获取网页数据
:HttpURLConnection conn = (HttpURLConnection) url.openConnection();
3)
设置连接超时
:conn.setConnectTimeout(6* 1000);
4)
对响应码进行判断
:if (conn.getResponseCode() != 200) throw new RuntimeException("
请求
url
失败
");
5)
得到网络返回的输入流
:InputStream is = conn.getInputStream();
6)String result = readData(is, "GBK");
conn.disconnect();
总结:
--
我们必须要记得设置连接超时
,
如果网络不好
,Android
系统在超过默认时间会收回资源中断操作
.
--
返回的响应码
200,
是成功
.
--
利用
ByteArrayOutputStream
类
,
将得到的输入流写入内存
.
--
在
Android
中对文件流的操作和
JAVA SE
上面是一样的
.
2.
从
Internet
获取文件
利用HttpURLConnection
对象
,
我们可以从网络中获取文件数据
.
Java
代码
1)
创建
URL
对象
,
并将文件路径传入
:URL url = new URL("http://photocdn.sohu.com/20100125/Img269812337.jpg");
2)
创建
HttpURLConnection
对象
,
从网络中获取文件数据
:HttpURLConnection conn = (HttpURLConnection) url.openConnection();
3)
设置连接超时
:conn.setConnectTimeout(6* 1000);
4)
对响应码进行判断
:if (conn.getResponseCode() != 200) throw new RuntimeException("
请求
url
失败
");
5)
得到网络返回的输入流
:InputStream is = conn.getInputStream();
6)将得到的文件流写出
:outStream.write(buffer, 0, len);
1)
创建
URL
对象
,
并将文件路径传入
:URL url = new URL("http://photocdn.sohu.com/20100125/Img269812337.jpg");
2)
创建
HttpURLConnection
对象
,
从网络中获取文件数据
:HttpURLConnection conn = (HttpURLConnection) url.openConnection();
3)
设置连接超时
:conn.setConnectTimeout(6* 1000);
4)
对响应码进行判断
:if (conn.getResponseCode() != 200) throw new RuntimeException("
请求
url
失败
");
5)
得到网络返回的输入流
:InputStream is = conn.getInputStream();
6)
将得到的文件流写出
:outStream.write(buffer, 0, len);
总结:
--
在对大文件的操作时
,
要将文件写到
SDCard
上面
,
不要直接写到手机内存上
.
--
操作大文件是
,
要一遍从网络上读
,
一遍要往
SDCard
上面写
,
减少手机内存的使用
.
这点很重要
,
面试经常会被问到
.
--
对文件流操作完
,
要记得及时关闭
.
3.
向
Internet
发送请求参数
Java
代码
1)
将地址和参数存到
byte
数组中
:byte[] data = params.toString().getBytes();
2)
创建
URL
对象
:URL realUrl = new URL(requestUrl);
3)
通过
HttpURLConnection
对象
,
向网络地址发送请求
:HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
4)
设置容许输出
:conn.setDoOutput(true);
5)
设置不使用缓存
:conn.setUseCaches(false);
6)
设置使用
POST
的方式发送
:conn.setRequestMethod("POST");
7)
设置维持长连接
:conn.setRequestProperty("Connection", "Keep-Alive");
8)
设置文件字符集
:conn.setRequestProperty("Charset", "UTF-8");
9)
设置文件长度
:conn.setRequestProperty("Content-Length", String.valueOf(data.length));
10)
设置文件类型
:conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
11)
以流的方式输出
.
1)
将地址和参数存到
byte
数组中
:byte[] data = params.toString().getBytes();
2)
创建
URL
对象
:URL realUrl = new URL(requestUrl);
3)
通过
HttpURLConnection
对象
,
向网络地址发送请求
:HttpURLConnection conn =
(HttpURLConnection) realUrl.openConnection();
4)
设置容许输出
:conn.setDoOutput(true);
5)
设置不使用缓存
:conn.setUseCaches(false);
6)
设置使用
POST
的方式发送
:conn.setRequestMethod("POST");
7)
设置维持长连接
:conn.setRequestProperty("Connection", "Keep-Alive");
8)
设置文件字符集
:conn.setRequestProperty("Charset", "UTF-8");
9)
设置文件长度
:conn.setRequestProperty("Content-Length", String.valueOf(data.length));
10)
设置文件类型
:conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
11)
以流的方式输出
.
总结:
--
发送
POST
请求必须设置允许输出
--
不要使用缓存
,
容易出现问题
.
--
在开始用
HttpURLConnection
对象的
setRequestProperty()
设置
,
就是生成
HTML
文件头
.
4.
向
Internet
发送
xml
数据
XML
格式是通信的标准语言
,Android
系统也可以通过发送
XML
文件传输数据
.
Java
代码
1)
将生成的
XML
文件写入到
byte
数组中
,
并设置为
UTF-8:byte[] xmlbyte = xml.toString().getBytes("UTF-8");
2)
创建
URL
对象
,
并指定地址和参数
:URL url = new URL("http://localhost:8080/itcast/contanctmanage.do?method=readxml");
3)
获得链接
:HttpURLConnection conn = (HttpURLConnection) url.openConnection();
4)
设置连接超时
:conn.setConnectTimeout(6* 1000);
5)
设置允许输出
conn.setDoOutput(true);
6)
设置不使用缓存
:conn.setUseCaches(false);
7)
设置以
POST
方式传输
:conn.setRequestMethod("POST");
8)
维持长连接
:conn.setRequestProperty("Connection", "Keep-Alive");
9)
设置字符集
:conn.setRequestProperty("Charset", "UTF-8");
10)
设置文件的总长度
:conn.setRequestProperty("Content-Length", String.valueOf(xmlbyte.length));
11)
设置文件类型
:conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");
12)
以文件流的方式发送
xml
数据
:outStream.write(xmlbyte);
1)
将生成的
XML
文件写入到
byte
数组中
,
并设置为
UTF-8:byte[] xmlbyte =
xml.toString().getBytes("UTF-8");
2)
创建
URL
对象
,
并指定地址和参数
:URL url = new URL("http://localhost:8080/itcast/contanctmanage.do?method=readxml");
3)
获得链接
:HttpURLConnection conn = (HttpURLConnection) url.openConnection();
4)
设置连接超时
:conn.setConnectTimeout(6* 1000);
5)
设置允许输出
conn.setDoOutput(true);
6)
设置不使用缓存
:conn.setUseCaches(false);
7)
设置以
POST
方式传输
:conn.setRequestMethod("POST");
8)
维持长连接
:conn.setRequestProperty("Connection", "Keep-Alive");
9)
设置字符集
:conn.setRequestProperty("Charset", "UTF-8");
10)
设置文件的总长度
:conn.setRequestProperty("Content-Length", String.valueOf(xmlbyte.length));
11)
设置文件类型
:conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");
12)
以文件流的方式发送
xml
数据
:outStream.write(xmlbyte);
总结:
--
我们使用的是用
HTML
的方式传输文件
,
这个方式只能传输一般在
5M
一下的文件
.
--
传输大文件不适合用
HTML
的方式
,
传输大文件我们要面向
Socket
编程
.
确保程序的稳定性
.
从
Internet
获取网页
发送请求,
将网页以流的形式读回来
.
Java
代码
1)
创建一个
URL
对象
:URL url = new URL("http://www.sohu.com");
2)
利用
HttpURLConnection
对象从网络中获取网页数据
:HttpURLConnection conn = (HttpURLConnection) url.openConnection();
3)
设置连接超时
:conn.setConnectTimeout(6* 1000);
4)
对响应码进行判断
:if (conn.getResponseCode() != 200) throw new RuntimeException("
请求
url
失败
");
5)
得到网络返回的输入流
:InputStream is = conn.getInputStream();
6)String result = readData(is, "GBK");
conn.disconnect();
1)
创建一个
URL
对象
:URL url = new URL("http://www.sohu.com");
2)
利用
HttpURLConnection
对象从网络中获取网页数据
:HttpURLConnection conn = (HttpURLConnection) url.openConnection();
3)
设置连接超时
:conn.setConnectTimeout(6* 1000);
4)
对响应码进行判断
:if (conn.getResponseCode() != 200) throw new RuntimeException("
请求
url
失败
");
5)
得到网络返回的输入流
:InputStream is = conn.getInputStream();
6)String result = readData(is, "GBK");
conn.disconnect();
总结:
--
我们必须要记得设置连接超时
,
如果网络不好
,Android
系统在超过默认时间会收回资源中断操作
.
--
返回的响应码
200,
是成功
.
--
利用
ByteArrayOutputStream
类
,
将得到的输入流写入内存
.
--
在
Android
中对文件流的操作和
JAVA SE
上面是一样的
.
2.
从
Internet
获取文件
利用HttpURLConnection
对象
,
我们可以从网络中获取文件数据
.
Java
代码
1)
创建
URL
对象
,
并将文件路径传入
:URL url = new URL("http://photocdn.sohu.com/20100125/Img269812337.jpg");
2)
创建
HttpURLConnection
对象
,
从网络中获取文件数据
:HttpURLConnection conn = (HttpURLConnection) url.openConnection();
3)
设置连接超时
:conn.setConnectTimeout(6* 1000);
4)
对响应码进行判断
:if (conn.getResponseCode() != 200) throw new RuntimeException("
请求
url
失败
");
5)
得到网络返回的输入流
:InputStream is = conn.getInputStream();
6)将得到的文件流写出
:outStream.write(buffer, 0, len);
1)
创建
URL
对象
,
并将文件路径传入
:URL url = new URL("http://photocdn.sohu.com/20100125/Img269812337.jpg");
2)
创建
HttpURLConnection
对象
,
从网络中获取文件数据
:HttpURLConnection conn = (HttpURLConnection) url.openConnection();
3)
设置连接超时
:conn.setConnectTimeout(6* 1000);
4)
对响应码进行判断
:if (conn.getResponseCode() != 200) throw new RuntimeException("
请求
url
失败
");
5)
得到网络返回的输入流
:InputStream is = conn.getInputStream();
6)
将得到的文件流写出
:outStream.write(buffer, 0, len);
总结:
--
在对大文件的操作时
,
要将文件写到
SDCard
上面
,
不要直接写到手机内存上
.
--
操作大文件是
,
要一遍从网络上读
,
一遍要往
SDCard
上面写
,
减少手机内存的使用
.
这点很重要
,
面试经常会被问到
.
--
对文件流操作完
,
要记得及时关闭
.
3.
向
Internet
发送请求参数
Java
代码
1)
将地址和参数存到
byte
数组中
:byte[] data = params.toString().getBytes();
2)
创建
URL
对象
:URL realUrl = new URL(requestUrl);
3)
通过
HttpURLConnection
对象
,
向网络地址发送请求
:HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
4)
设置容许输出
:conn.setDoOutput(true);
5)
设置不使用缓存
:conn.setUseCaches(false);
6)
设置使用
POST
的方式发送
:conn.setRequestMethod("POST");
7)
设置维持长连接
:conn.setRequestProperty("Connection", "Keep-Alive");
8)
设置文件字符集
:conn.setRequestProperty("Charset", "UTF-8");
9)
设置文件长度
:conn.setRequestProperty("Content-Length", String.valueOf(data.length));
10)
设置文件类型
:conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
11)
以流的方式输出
.
1)
将地址和参数存到
byte
数组中
:byte[] data = params.toString().getBytes();
2)
创建
URL
对象
:URL realUrl = new URL(requestUrl);
3)
通过
HttpURLConnection
对象
,
向网络地址发送请求
:HttpURLConnection conn =
(HttpURLConnection) realUrl.openConnection();
4)
设置容许输出
:conn.setDoOutput(true);
5)
设置不使用缓存
:conn.setUseCaches(false);
6)
设置使用
POST
的方式发送
:conn.setRequestMethod("POST");
7)
设置维持长连接
:conn.setRequestProperty("Connection", "Keep-Alive");
8)
设置文件字符集
:conn.setRequestProperty("Charset", "UTF-8");
9)
设置文件长度
:conn.setRequestProperty("Content-Length", String.valueOf(data.length));
10)
设置文件类型
:conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
11)
以流的方式输出
.
总结:
--
发送
POST
请求必须设置允许输出
--
不要使用缓存
,
容易出现问题
.
--
在开始用
HttpURLConnection
对象的
setRequestProperty()
设置
,
就是生成
HTML
文件头
.
4.
向
Internet
发送
xml
数据
XML
格式是通信的标准语言
,Android
系统也可以通过发送
XML
文件传输数据
.
Java
代码
1)
将生成的
XML
文件写入到
byte
数组中
,
并设置为
UTF-8:byte[] xmlbyte = xml.toString().getBytes("UTF-8");
2)
创建
URL
对象
,
并指定地址和参数
:URL url = new URL("http://localhost:8080/itcast/contanctmanage.do?method=readxml");
3)
获得链接
:HttpURLConnection conn = (HttpURLConnection) url.openConnection();
4)
设置连接超时
:conn.setConnectTimeout(6* 1000);
5)
设置允许输出
conn.setDoOutput(true);
6)
设置不使用缓存
:conn.setUseCaches(false);
7)
设置以
POST
方式传输
:conn.setRequestMethod("POST");
8)
维持长连接
:conn.setRequestProperty("Connection", "Keep-Alive");
9)
设置字符集
:conn.setRequestProperty("Charset", "UTF-8");
10)
设置文件的总长度
:conn.setRequestProperty("Content-Length", String.valueOf(xmlbyte.length));
11)
设置文件类型
:conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");
12)
以文件流的方式发送
xml
数据
:outStream.write(xmlbyte);
1)
将生成的
XML
文件写入到
byte
数组中
,
并设置为
UTF-8:byte[] xmlbyte =
xml.toString().getBytes("UTF-8");
2)
创建
URL
对象
,
并指定地址和参数
:URL url = new URL("http://localhost:8080/itcast/contanctmanage.do?method=readxml");
3)
获得链接
:HttpURLConnection conn = (HttpURLConnection) url.openConnection();
4)
设置连接超时
:conn.setConnectTimeout(6* 1000);
5)
设置允许输出
conn.setDoOutput(true);
6)
设置不使用缓存
:conn.setUseCaches(false);
7)
设置以
POST
方式传输
:conn.setRequestMethod("POST");
8)
维持长连接
:conn.setRequestProperty("Connection", "Keep-Alive");
9)
设置字符集
:conn.setRequestProperty("Charset", "UTF-8");
10)
设置文件的总长度
:conn.setRequestProperty("Content-Length", String.valueOf(xmlbyte.length));
11)
设置文件类型
:conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");
12)
以文件流的方式发送
xml
数据
:outStream.write(xmlbyte);
总结:
--
我们使用的是用
HTML
的方式传输文件
,
这个方式只能传输一般在
5M
一下的文件
.
--
传输大文件不适合用
HTML
的方式
,
传输大文件我们要面向
Socket
编程
.
确保程序的稳定性
.
相关文章推荐
- 初学使用HttpURLConnection访问网络之发送GET请求
- Android使用HttpURLConnection发送网络请求(笔记)
- 使用 HTTP 协议访问网络的两种方式:HttpURLConnection 和 HttpClient
- Android之访问网络,使用HttpURLConnection还是HttpClient?
- 使用HC(HttpClient)/UC(HttpURLConnection)进行网络访问的基本步骤_王菲
- 0314-使用HttpURLConnection下载网络图片并显示
- 使用HttpURLConnection下载网络图片并显示
- Android访问网络,使用HttpURLConnection还是HttpClient?
- Android访问网络,使用HttpURLConnection还是HttpClient?
- Android之B面试题④访问网络,使用HttpURLConnection还是HttpClient?
- URLConnection,HttpURLConnection 使用总结 - 网络爬虫基础版
- Android之使用HttpURLConnection连接网络
- Android访问网络,使用HttpURLConnection还是HttpClient?
- 使用HttpURLConnection从网络中下载图片
- Android访问网络,使用HttpURLConnection还是HttpClient?
- 使用HC(HttpClient)/UC(HttpURLConnection)进行网络访问的基本步骤:
- 使用HttpURLConnection加载网络图片
- Android 网络应用重点———使用HttpURLConnection 上传文件
- 使用HttpURLConnection下载网络图片
- Android访问网络,使用HttpURLConnection还是HttpClient?