【Andorid网络技术】HttpURLConnection对象使用

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值