package com.cz.utils; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; import android.util.Log; public class HttpUtil { private static final String GET = "GET"; private static final String POST = "POST"; private static final int connectTimeout = 6000; private static final int readTimeout = 30000; /** * GET方式发送数据 */ public static String sendGet(String http, String data, String charset) { return request(http, data, charset, GET); } public static String sendGet(String http, HashMap<String, String> map, String charset) { return sendGet(http, map, charset, false); } public static String sendGet(String http, HashMap<String, String> map, String charset, boolean encode) { return sendGet(http, praseMap(map, charset, encode), charset); } /** * POST方式发送数据 */ public static String sendPost(String http, String data, String charset) { return request(http, data, charset, POST); } public static String sendPost(String http, HashMap<String, String> map, String charset) { return sendPost(http, map, charset, false); } public static String sendPost(String http, HashMap<String, String> map, String charset, boolean encode) { return sendPost(http, praseMap(map, charset, encode), charset); } /** * 解析map */ private static String praseMap(HashMap<String, String> map, String charset, boolean encode) { StringBuffer sb = new StringBuffer(); if (map != null && !map.isEmpty()) { try { boolean f = true; String v; for (String k : map.keySet()) { if (k != null && !"".equals(k)) { v = map.get(k).trim(); if (!f) sb.append("&"); if (encode) v = URLEncoder.encode(v, charset); sb.append(k).append("=").append(v); f = false; } } } catch (Exception e) { e.printStackTrace(); } } return sb.toString().trim(); } private static String request(String http, String data, String charset, String type) { StringBuffer sb = new StringBuffer(); HttpURLConnection conn = null; OutputStreamWriter out = null; BufferedWriter bw = null; InputStreamReader isr = null; BufferedReader br = null; try { if (GET.equals(type) && data != null && !"".equals(data)){ http = http + "?" + data; } URL u = new URL(http); conn = (HttpURLConnection) u.openConnection(); conn.setRequestMethod(type); conn.setConnectTimeout(connectTimeout); conn.setReadTimeout(readTimeout); if (POST.equals(type)) conn.setDoOutput(true); conn.setDoInput(true); conn.connect(); // 传送数据 if (POST.equals(type)) { if (data != null && !"".equals(data)) { out = new OutputStreamWriter(conn.getOutputStream(), charset); bw = new BufferedWriter(out); bw.write(data); bw.flush(); } } // 接收数据 if (conn.getResponseCode() == 200) { isr = new InputStreamReader(conn.getInputStream(), charset); br = new BufferedReader(isr); String line; while ((line = br.readLine()) != null){ sb.append(line).append(System.getProperty("line.separator")); } } } catch (Exception e) { e.printStackTrace(); } finally { try { bw.close(); } catch (Exception e) { } try { out.close(); } catch (Exception e) { } try { br.close(); } catch (Exception e) { } try { isr.close(); } catch (Exception e) { } try { conn.disconnect(); } catch (Exception e) { } } Log.e("sb:", sb.toString().trim()); return sb.toString().trim(); } }
相关推荐
在Android应用开发中,与服务器进行数据交互是常见的需求,HttpURLConnection是Android SDK提供的一种轻量级、低级别的网络通信接口。本主题将深入探讨如何使用HttpURLConnection进行Android与服务器的简单交互,...
3. **网络请求工具类**:网络请求是Android应用与服务器交互的基础。这类工具类可能封装了`HttpURLConnection`、`OkHttp`或`Retrofit`等网络库的使用,提供异步请求、同步请求以及上传下载文件的方法。 4. **图片...
4. **网络请求工具类**:基于Android的HttpURLConnection或者OkHttp库,封装网络请求接口,如GET、POST,支持异步和同步请求,处理JSON或XML数据,甚至可能包含缓存策略。 5. **权限管理工具类**:随着Android 6.0...
这个“android java 多线程下载工具类”应该是为了简化这一过程而设计的,通过调用一个方法就能实现多线程下载功能。下面我们将深入探讨多线程下载的原理以及如何在Android中实现。 1. **多线程下载原理**: - 多...
1. **Android网络请求库的选择**:Android SDK提供了HttpURLConnection类来处理网络请求,但由于其API较为复杂,开发者通常会使用第三方库,如OkHttp、Retrofit或Volley。这些库提供了更简洁的接口,便于我们处理...
本示例着重讲解如何在Android中实现HTTP网络请求,包括同步请求和异步请求。 一、HTTP网络基础 HTTP(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是互联网上应用最为广泛的一种网络...
Android网络编程是移动应用...无论是使用Android SDK自带的HttpURLConnection还是选择一个第三方的库,了解如何正确处理网络请求、如何优化网络通信以及如何提高应用的响应性和安全性,都是移动应用开发者必备的技能。
传统的Android网络编程通常使用HttpURLConnection或者HttpClient,但这两者存在API复杂、易出错等问题。因此,出现了许多优秀的网络框架,如Volley、OkHttp、Retrofit等,它们简化了网络通信过程,提高了开发效率。 ...
例如,`HttpURLConnection`和`OkHttp`在Java和Android开发中广泛使用,提供便捷的网络请求功能。 4. **数据序列化与反序列化工具类**:这些工具类用于将对象转化为可存储或传输的数据格式(如JSON或XML),以及将...
在Android应用开发中,显示网络图片是一个常见的需求,特别是在构建社交、新闻或者电商类应用时。Android Studio作为官方推荐的Android开发集成环境,提供了丰富的工具和技术支持来实现这一功能。以下将详细介绍如何...
6. **网络编程**:为了实现数据的云同步,开发者需要掌握HTTP协议,可能使用了Android的HttpURLConnection或者第三方库如Retrofit,来与服务器进行数据交换。 7. **JSON解析**:在与服务器交互时,数据通常以JSON...
3. 执行网络请求:使用Call对象的enqueue()或execute()方法发起异步或同步请求。 ```java networkService.getData().enqueue(new Callback() { @Override public void onResponse(Call<ResponseBody> call, ...
同步请求会阻塞UI线程,可能导致应用无响应,因此在Android中通常不推荐。异步请求,如使用`AsyncTask`、`IntentService`或`Volley`、`Retrofit`等库,可以在后台线程执行,避免了阻塞UI,提高了用户体验。 Android...
- 在Android中,我们通常使用HttpURLConnection或第三方库如Volley、Retrofit或OkHttp来处理网络请求。这些库提供了更高级别的抽象,简化了HTTP通信过程。 2. **Android权限**: - 实现网络功能需要在...
Netroid是一个轻量级的Android网络请求库,它简化了网络请求的操作,提供了异步和同步两种方式,支持HTTP和HTTPS协议。Netroid的核心特性包括: 1. **简洁API**:Netroid提供了一套易于理解和使用的API,使得开发者...
例如,HttpURLConnection是原生支持的网络连接类,可以用于GET和POST请求,而OkHttp是一个高效的网络库,提供了异步请求和响应缓存等功能。 2. **网络状态监听**:源码中可能包含BroadcastReceiver,用于监听网络...
5. **同步和进度更新**:确保多个线程安全地访问和更新文件,可能需要用到synchronized关键字或者线程同步工具如ReentrantLock。同时,需要实时更新并显示下载进度,这可以通过Handler或者LiveData等组件实现。 6. ...
1. **HttpURLConnection**:这是Android SDK内置的一种网络通信方式,基于Java的HttpURLConnection类。它可以处理HTTP请求和响应,支持HTTP/1.1协议,并且具有低功耗、低内存占用的优点。示例代码会展示如何使用...
总之,这个压缩包提供的工具类涵盖了Android应用开发中涉及文件下载、上传和解压的核心技术。开发者可以通过参考和学习这些代码,提升自己的技能,解决实际项目中的相关问题。不过需要注意的是,由于无法验证所有...
Apache HttpClient是一个强大的HTTP客户端,支持同步和异步请求,可以用于实现异步加载网络图片。它的特性包括连接池管理、重试策略、自定义请求头等功能。在Android中,虽然现在官方推荐使用OkHttp,但在某些场景下...