您的位置:首页 > 理论基础 > 计算机网络

【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
编程
.
确保程序的稳定性
.

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息