Android App开发基础篇—HttpURLConnection基础使用
来源:互联网 发布:遥感大数据特点 编辑:程序博客网 时间:2024/06/05 15:00
Android App开发基础篇—HttpURLConnection基础使用
前言:网络请求功能是许多软件开发中必备的功能之一。在Android开发中,实现网络请求有许多方法,除了可以使用API文档提供的HttpURLconnection类,还有网络上各种各样的开源框架,比如现今比较流行的Volley,OKHttp,Retrofit等。本篇文章起,我们将会一一认识一下当下Android开发中几种比较流行的网络请求方法的基本使用。首先,本篇文章先来认识最基本的HttpURLConenction。
一、基本使用步骤:
要使用HttpURLConnection进行基本的网络请求,只需遵循以下几个步骤:
(1)获取URL实例:使用请求网址(或服务器接口地址)获取一个URL实例。 例如:
//创建URL资源URL url = new URL("http://www.baidu.com");
(2)建立HTTP连接,获取HttpURLConnection实例:通过URL实例的openConnection()方法建立链接,同时将该方法返回的一个实例强转为HttpURLConnection类型。
//建立HTTP连接,获取HttpURLConnection实例HttpURLConnection conn = (HttpURLConnection) url.openConnection();
(3)设置HTTP请求的方式(可选):通过HttpURLConnection实例的setRequestMethod()方法,设置HTTP请求的方式,其中可选方式包括GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE,常用的为GET和POST。默认为GET。例如:
//设置请求方式conn.setRequestMethod("POST");
(4)设置连接属性,添加请求参数(可选):使用HttpURLConnection实例的addRequestProperty()方法可以为HTTP连接设置一些连接属性,例如,设置HTTP连接的header信息,或者在HTTP连接中添加服务端所要求的请求参数等。下面列举一些常见属性,在实际应用中按需而定:
//设置维持长连接conn.addRequestProperty("Connection", "Keep-Alive");//设置文件字符集格式为UTF-8conn.addRequestProperty("Charset", "UTF-8");//设置文件类型为JSON格式conn.addRequestProperty("Content-Type", "application/json");//添加服务端接口所需请求参数,例如登录接口所需的用户名conn.addRequestProperty("username","test");
(5)设置是否允许输出(可选):如果HTTP请求中需要包含请求参数,如登录接口需要用户名和密码参数,则需要使用HttpURLConnection实例设置setDoOutput(true)(默认为false)。同时,如果将该方法设置为true,即使没有在代码中设置setRequestMethod("POST"),HTTP请求也会自动使用POST方式。
//设置允许输出conn.setDoOutput(true);
(6)设置是否需要缓存(可选)
//设置不用缓存conn.setUseCaches(false);
(7)获取请求结果:
//请求结果码int responseCode = conn.getResponseCode();//responseCode==200表示请求成功if (responseCode == 200) { //获取返回的数据 InputStream is = conn.getInputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = is.read(buffer)) != -1) { baos.write(buffer, 0, len); } String str = baos.toString(); baos.flush(); baos.close(); is.close();}
(8)断开连接
conn.disconnect();
二、向服务端提交JSON,返回JSON数据
这里以一个用户登录接口为例,接口需要2个参数:用户名username和密码password,参数需以JSON格式提交,服务端返回的数据也是JSON格式。
/* * 本方法演示通过HttpURLConnection向 * 服务端提交JSON,并从服务端返回JSON数据 * 其中被注释的代码表示可选设置,实际开发中 * 依据需求而设置 * * */ private void loginRequest() { try { //构建JSON实例并向其中添加请求参数 JSONObject jsonObject = new JSONObject(); jsonObject.put("username", "test"); jsonObject.put("password", "test"); //创建URL资源 URL url = new URL(LOGIN); //建立HTTP连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //设置允许输出 conn.setDoOutput(true); //默认即为true,如果设置成false, //将无法收到服务端返回的数据// conn.setDoInput(true); //设置不用缓存// conn.setUseCaches(false); //设置请求方式// conn.setRequestMethod("POST"); //设置维持长连接// conn.addRequestProperty("Connection", "Keep-Alive"); //设置文件字符集格式// conn.addRequestProperty("Charset", "UTF-8"); //设置文件类型// conn.addRequestProperty("Content-Type", "application/json"); //JSON转为字节数组 byte[] bytesData = jsonObject.toString().getBytes(); //设置文件长度// conn.addRequestProperty("Content-Length", String.valueOf(bytesData.length)); //开始请求 conn.connect(); OutputStream outputStream = conn.getOutputStream(); //写入请求的数据 outputStream.write(bytesData); outputStream.flush(); outputStream.close(); //请求结果码 int responseCode = conn.getResponseCode(); Log.e("MainActivity", "responseCode:" + responseCode); if (responseCode == 200) { InputStream is = conn.getInputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = is.read(buffer)) != -1) { baos.write(buffer, 0, len); } String str = baos.toString(); Log.e("MainActivity", str); //对服务端返回的JSON格式的数据进行解析 JSONObject json = new JSONObject(str); String msg = json.optString("msg"); Log.e("MainActivity", msg); baos.flush(); baos.close(); is.close(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } }
0 0
- Android App开发基础篇—HttpURLConnection基础使用
- Android HttpURLConnection 基础使用
- Android开发-基础网络组件(1)使用HttpURLConnection登陆-AndroidStudio
- Android---HttpURLConnection基础
- Android基础:HttpURLConnection
- Android App开发基础篇—数据存储(SQLite数据库)
- Android App开发基础篇—Socket通信
- Android app 基础开发流程
- 使用jqMobi开发app基础
- Android基础入门教程——1.2.2 使用Android Studio开发Android APP
- Android基础入门教程——1.2.2 使用Android Studio开发Android APP
- [Android基础]Android中使用HttpURLConnection
- Android基础入门教程——1.2.1 使用Eclipse + ADT + SDK开发Android APP
- Android基础入门教程——1.2.1 使用Eclipse + ADT + SDK开发Android APP
- Android中HttpURLConnection的基础
- Android 基础之网络技术-HttpURLConnection
- 使用jqMobi开发app基础:使用 jQuery
- 野人学Android基础篇之网络通讯第一课--HttpUrlConnection的使用
- java之xml解析
- Redis Sentinel机制与用法(一)
- Struts2的<s:date >标签格式化时间
- jsp分页
- CSU1115——最短的名字
- Android App开发基础篇—HttpURLConnection基础使用
- iOS开发中内置浏览器
- matlab2012b与VS2012混编总结(4)——配置VS2012工作环境
- 欢迎使用CSDN-markdown编辑器
- elasticsearch源码分析之Rest/RPC 接口解析(八)
- selenium+testNG+maven
- 数组之Next Permutation---leetcode
- 用matlab 保存带标记图像、图片的方法总结
- LeetCode : Minimum Depth of Binary Tree