Android 网络编程之HttpURLConnection

利用HttpURLConnection对象,我们可以从网络中获取网页数据.

01 URL url = new URL("http://www.sohu.com");
02     HttpURLConnection conn = (HttpURLConnection) url.openConnection();
03     conn.setConnectTimeout(61000);//设置连接超时
04     if (conn.getResponseCode() != 200throw new RuntimeException("请求url失败");
05     InputStream is = conn.getInputStream();//得到网络返回的输入流
06     String result = readData(is, "GBK");
07     conn.disconnect();
08     System.out.println(result);
09     //第一个参数为输入流,第二个参数为字符集编码
10     public static String readData(InputStream inSream, String charsetName) throws Exception{
11         ByteArrayOutputStream outStream = new ByteArrayOutputStream();
12         byte[] buffer = new byte[1024];
13         int len = -1;
14         while( (len = inSream.read(buffer)) != -1 ){
15             outStream.write(buffer, 0, len);
16         }
17         byte[] data = outStream.toByteArray();
18         outStream.close();
19         inSream.close();
20         return new String(data, charsetName);
21     }

利用HttpURLConnection对象,我们可以从网络中获取文件数据.

02 HttpURLConnection conn = (HttpURLConnection) url.openConnection();
03 conn.setConnectTimeout(61000);
04 if (conn.getResponseCode() != 200throw new RuntimeException("请求url失败");
05 InputStream is = conn.getInputStream();
06 readAsFile(is, "Img269812337.jpg");
07  
08 public static void readAsFile(InputStream inSream, File file) throws Exception{
09     FileOutputStream outStream = new FileOutputStream(file);
10     byte[] buffer = new byte[1024];
11     int len = -1;
12     while( (len = inSream.read(buffer)) != -1 ){
13         outStream.write(buffer, 0, len);
14     }
15      outStream.close();
16     inSream.close();
17 }

利用HttpURLConnection对象,我们可以向网络发送请求参数.

02 Map<String, String> requestParams = new HashMap<String, String>();
03 requestParams.put("age""12");
04 requestParams.put("name""中国");
05  StringBuilder params = new StringBuilder();
06 for(Map.Entry<String, String> entry : requestParams.entrySet()){
07     params.append(entry.getKey());
08     params.append("=");
09     params.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
10     params.append("&");
11 }
12 if (params.length() > 0) params.deleteCharAt(params.length() - 1);
13 byte[] data = params.toString().getBytes();
14 URL realUrl = new URL(requestUrl);
15 HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
16 conn.setDoOutput(true);//发送POST请求必须设置允许输出
17 conn.setUseCaches(false);//不使用Cache
18 conn.setRequestMethod("POST");           
19 conn.setRequestProperty("Connection""Keep-Alive");//维持长连接
20 conn.setRequestProperty("Charset""UTF-8");
21 conn.setRequestProperty("Content-Length", String.valueOf(data.length));
22 conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
23 DataOutputStream outStream = new DataOutputStream(conn.getOutputStream());
24 outStream.write(data);
25 outStream.flush();
26 if( conn.getResponseCode() == 200 ){
27         String result = readAsString(conn.getInputStream(), "UTF-8");
28         outStream.close();
29         System.out.println(result);
30 }

利用HttpURLConnection对象,我们可以向网络发送xml数据.

01 StringBuilder xml =  new StringBuilder();
02 xml.append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
03 xml.append("<M1 V=10000>");
04 xml.append("<U I=1 D=\"N73\">中国</U>");
05 xml.append("</M1>");
06 byte[] xmlbyte = xml.toString().getBytes("UTF-8");
08 HttpURLConnection conn = (HttpURLConnection) url.openConnection();
09 conn.setConnectTimeout(61000);
10 conn.setDoOutput(true);//允许输出
11 conn.setUseCaches(false);//不使用Cache
12 conn.setRequestMethod("POST");           
13 conn.setRequestProperty("Connection""Keep-Alive");//维持长连接
14 conn.setRequestProperty("Charset""UTF-8");
15 conn.setRequestProperty("Content-Length", String.valueOf(xmlbyte.length));
16 conn.setRequestProperty("Content-Type""text/xml; charset=UTF-8");
17 DataOutputStream outStream = new DataOutputStream(conn.getOutputStream());
18 outStream.write(xmlbyte);//发送xml数据
19 outStream.flush();
20 if (conn.getResponseCode() != 200throw new RuntimeException("请求url失败");
21 InputStream is = conn.getInputStream();//获取返回数据
22 String result = readAsString(is, "UTF-8");
23 outStream.close();

Android 网络编程之HttpURLConnection运用的更多相关文章

  1. android 网络编程之HttpURLConnection与HttpClient使用与封装

    1.写在前面     大部分andriod应用需要与服务器进行数据交互,HTTP.FTP.SMTP或者是直接基于SOCKET编程都可以进行数据交互,但是HTTP必然是使用最广泛的协议.     本文并 ...

  2. android网络编程之HttpUrlConnection的讲解--实现文件的断点上传

    1.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android.permission.INTERNET"/& ...

  3. android网络编程之HttpUrlConnection的讲解--实现文件断点下载

    1.没有实现服务器端,下载地址为网上的一个下载链接. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android. ...

  4. android网络编程之HttpUrlConnection的讲解--上传大文件

    1.服务器后台使用Servlet开发,这里不再介绍. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android. ...

  5. android网络编程之HttpUrlConnection的讲解--POST请求

    1.服务器后台使用Servlet开发,这里不再介绍. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android. ...

  6. android网络编程之HttpUrlConnection的讲解--GET请求

    1.服务器后台使用Servlet开发,这里不再介绍. 2.测试机通过局域网链接到服务器上,可以参考我的博客:http://www.cnblogs.com/begin1949/p/4905192.htm ...

  7. android网络编程之HttpUrlConnection的讲解--DownLoadManager基本用法

    1.DownLoadManager是Android用系统服务(Service)的方式来优化处理长时间的下载操作的一个工具类.避免了我们去处理多线程,通知栏等等. 2.不要忘记添加权限 <uses ...

  8. Android网络编程之HttpClient运用

    Android网络编程之HttpClient运用 在 Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们 ...

  9. Android网络编程之Http通信

    Android中提供的HttpURLConnection和HttpClient接口可以用来开发HTTP程序.以下是本人在学习中的总结与归纳.1. HttpURLConnection接口    首先需要 ...

随机推荐

  1. Luogu P5351 Ruri Loves Maschera

    先ORZ\(Owen\)一发.感觉是个很套路的题,这里给一个蒟蒻的需要特判数据的伪\(n\log^2 n\)算法,真正的两只\(\log\)的还是去看标算吧(但这个好想好写跑不满啊) 首先这种树上路径 ...

  2. Robot Framework(十三) 执行测试用例——创建输出

    3.5创建输出 执行测试时会创建几个输出文件,并且所有这些文件都与测试结果有某种关联.本节讨论创建的输出,如何配置它们的创建位置以及如何微调其内容. 3.5.1不同的输出文件 输出目录 输出文件 日志 ...

  3. C05 C语言字符串和数组

    目录 数组 字符串 数组 概念 数组是有序数据的集合. 数组中的每一个元素属于同一个数据类型. 通过数组名和下标唯一确定数组中的元素. 一维数组的定义 语法格式 数据类型   数组名[常量表达式] 例 ...

  4. hibernate4+spring3+struts2搭建框架实例

    1.所需要的JAR包 2.web.xml配置文件,这个和平时的配置是一样的 <?xml version="1.0" encoding="UTF-8"?&g ...

  5. SSI的实例(登录增删改查)

    源码下载:http://download.csdn.net/detail/u011518709/8195143 主要jar包: 配置文件:web.xml <?xml version=" ...

  6. java在线聊天项目0.4版本 制作服务端接收连接,客户端连接功能 新增客户端窗口打开时光标指向下边文本域功能,使用WindowListener监听WindowAdapter

    建一个服务端类ChatServer,用于设置端口接收连接 package com.swift; import java.io.IOException; import java.net.ServerSo ...

  7. Django_外键查询和反查询

    一.ForeignKey @property装饰器的作用是返回一个属性特性,在数据库中也有一些小技巧可以拿来用,比如今天要写的外键查询和反向查询的内容. from django.db import m ...

  8. 2018年,最经典的26个JavaScript面试题和答案!

    根据 Stack Overflow 的 2018 年度调查,JavaScript 连续六年成为最常用的编程语言.所以我们必须面对这样的现实,JavaScript 已经成为全栈开发技能的基石,在全栈开发 ...

  9. Ajax跨域问题---jsonp

    跨域:跨域名  一个域名下的文件去请求了和他不一样的域名下资源文件,那么就会产生跨域请求 解决跨域问题办法: 1.将要访问的外部资源存到本域名下的一个php文件 2.用flash方式 3.JSONP: ...

  10. 王小胖之 Base64编码/解码

    使用场景:编码网址作为URL参数,简单编码或加密数据,下载地址生成或解析. 实现功能:BASE64在线编码和解码. 数据实例:王小胖好啊,王小胖顶呱呱!! ~~ english 123 !@#$%^& ...