- 浏览: 3572886 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (1491)
- Hibernate (28)
- spring (37)
- struts2 (19)
- jsp (12)
- servlet (2)
- mysql (24)
- tomcat (3)
- weblogic (1)
- ajax (36)
- jquery (47)
- html (43)
- JS (32)
- ibatis (0)
- DWR (3)
- EXTJS (43)
- Linux (15)
- Maven (3)
- python (8)
- 其他 (8)
- JAVASE (6)
- java javase string (0)
- JAVA 语法 (3)
- juddiv3 (15)
- Mule (1)
- jquery easyui (2)
- mule esb (1)
- java (644)
- log4j (4)
- weka (12)
- android (257)
- web services (4)
- PHP (1)
- 算法 (18)
- 数据结构 算法 (7)
- 数据挖掘 (4)
- 期刊 (6)
- 面试 (5)
- C++ (1)
- 论文 (10)
- 工作 (1)
- 数据结构 (6)
- JAVA配置 (1)
- JAVA垃圾回收 (2)
- SVM (13)
- web st (1)
- jvm (7)
- weka libsvm (1)
- weka屈伟 (1)
- job (2)
- 排序 算法 面试 (3)
- spss (2)
- 搜索引擎 (6)
- java 爬虫 (6)
- 分布式 (1)
- data ming (1)
- eclipse (6)
- 正则表达式 (1)
- 分词器 (2)
- 张孝祥 (1)
- solr (3)
- nutch (1)
- 爬虫 (4)
- lucene (3)
- 狗日的腾讯 (1)
- 我的收藏网址 (13)
- 网络 (1)
- java 数据结构 (22)
- ACM (7)
- jboss (0)
- 大纸 (10)
- maven2 (0)
- elipse (0)
- SVN使用 (2)
- office (1)
- .net (14)
- extjs4 (2)
- zhaopin (0)
- C (2)
- spring mvc (5)
- JPA (9)
- iphone (3)
- css (3)
- 前端框架 (2)
- jui (1)
- dwz (1)
- joomla (1)
- im (1)
- web (2)
- 1 (0)
- 移动UI (1)
- java (1)
- jsoup (1)
- 管理模板 (2)
- javajava (1)
- kali (7)
- 单片机 (1)
- 嵌入式 (1)
- mybatis (2)
- layui (7)
- asp (12)
- asp.net (1)
- sql (1)
- c# (4)
- andorid (1)
- 地价 (1)
- yihuo (1)
- oracle (1)
最新评论
-
endual:
https://blog.csdn.net/chenxbxh2 ...
IE6 bug -
ice86rain:
你好,ES跑起来了吗?我的在tomcat启动时卡在这里Hibe ...
ES架构技术介绍 -
TopLongMan:
...
java public ,protect,friendly,private的方法权限(转) -
贝塔ZQ:
java实现操作word中的表格内容,用插件实现的话,可以试试 ...
java 读取 doc poi读取word中的表格(转) -
ysj570440569:
Maven多模块spring + springMVC + JP ...
Spring+SpringMVC+JPA
项目中客户端与服务器端采用http请求进行交互,在这里我把http请求的工具类贴出来。
该工具类采用的是HttpClients框架,HTTP保存方式有两种选择 :一种:整个应用 只创建 一个HttpClient对象,然后保存在整个程序中去。此情况无法创建多线程中应用。
另一种:随时创建HttpClient对象。系统自动保存Session就行。此情况可能对系统资源消耗利害
用完之后请随时销毁HttpClient,避免系统中存在很多HttpClient对象。在这里我采用的是第二种。
包含两个java文件,第一个是主要的请求工具类文件,第二个主要是保存请求的session,下面见代码:
[cpp] view plaincopy
- package com.hlj.padtwo.util.util_public.httputil;
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.URLEncoder;
- import java.nio.charset.Charset;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import javax.net.ssl.SSLHandshakeException;
- import org.apache.http.Header;
- import org.apache.http.HttpEntityEnclosingRequest;
- import org.apache.http.HttpHost;
- import org.apache.http.HttpRequest;
- import org.apache.http.HttpResponse;
- import org.apache.http.NameValuePair;
- import org.apache.http.NoHttpResponseException;
- import org.apache.http.client.ClientProtocolException;
- import org.apache.http.client.CookieStore;
- import org.apache.http.client.HttpRequestRetryHandler;
- import org.apache.http.client.entity.UrlEncodedFormEntity;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.client.params.HttpClientParams;
- import org.apache.http.conn.params.ConnRouteParams;
- import org.apache.http.entity.mime.HttpMultipartMode;
- import org.apache.http.entity.mime.MultipartEntity;
- import org.apache.http.entity.mime.content.ContentBody;
- import org.apache.http.entity.mime.content.FileBody;
- import org.apache.http.entity.mime.content.StringBody;
- import org.apache.http.impl.client.DefaultHttpClient;
- import org.apache.http.params.BasicHttpParams;
- import org.apache.http.params.HttpConnectionParams;
- import org.apache.http.params.HttpParams;
- import org.apache.http.protocol.ExecutionContext;
- import org.apache.http.protocol.HTTP;
- import org.apache.http.protocol.HttpContext;
- import org.apache.http.util.EntityUtils;
- import android.app.Activity;
- import android.content.Context;
- import android.widget.Toast;
- import com.hlj.padtwo.util.application.MyApplication;
- /***
- * Http通信中的POST和GET请求方式的不同。GET把参数放在URL字符串后面,传递给服务器。
- * 而POST方法的参数是放在Http请求中,主要用于手机对Http访问提供公共的访问类对象。
- * @author hlj
- * @date
- * @versionn 1.0
- **/
- public class HttpClients {
- /** 执行downfile后,得到下载文件的大小 */
- private long contentLength;
- /** 返回连接失败信息 **/
- private String strResult = "服务器无法连接,请检查网络";
- /** http 请求头参数 **/
- private HttpParams httpParams;
- /** httpClient 对象 **/
- private DefaultHttpClient httpClient;
- /** 得到上下文 **/
- private Context context;
- private Activity activity = null;
- public HttpClients(Activity act) {
- this.context = act.getBaseContext();
- this.activity = act;
- getHttpClient();
- }
- /**
- * 提供GET形式的访问网络请求 doGet 参数示例: Map params=new HashMap();
- * params.put("usename","helijun"); params.put("password","123456");
- * httpClient.doGet(url,params);
- *
- * @param url
- * 请求地址
- * @param params
- * 请求参数
- * @return 返回 String jsonResult;
- *
- * **/
- @SuppressWarnings("unchecked")
- public String doGet(String url, Map params) {
- /** 建立HTTPGet对象 **/
- String paramStr = "";
- if (params == null)
- params = new HashMap();
- /** 迭代请求参数集合 **/
- Iterator iter = params.entrySet().iterator();
- while (iter.hasNext()) {
- Map.Entry entry = (Map.Entry) iter.next();
- Object key = entry.getKey();
- String val = nullToString(entry.getValue());
- paramStr += paramStr = "&" + key + "=" + URLEncoder.encode(val);
- }
- if (!paramStr.equals("")) {
- paramStr = paramStr.replaceFirst("&", "?");
- url += paramStr;
- }
- return doGet(url);
- }
- /**
- * 提供GET形式的访问网络请求 doGet 参数示例: Map params=new HashMap();
- * params.put("usename","gongshuanglin"); params.put("password","123456");
- * httpClient.doGet(url,params);
- *
- * @param url
- * 请求地址
- * @param params
- * 请求参数
- * @return 返回 String jsonResult;
- *
- */
- public String doGet(String url, List<NameValuePair> params) {
- /** 建立HTTPGet对象 **/
- String paramStr = "";
- if (params == null)
- params = new ArrayList<NameValuePair>();
- /** 迭代请求参数集合 **/
- for (NameValuePair obj : params) {
- paramStr += paramStr = "&" + obj.getName() + "="
- + URLEncoder.encode(obj.getValue());
- }
- if (!paramStr.equals("")) {
- paramStr = paramStr.replaceFirst("&", "?");
- url += paramStr;
- }
- return doGet(url);
- }
- /**
- * 提供GET形式的访问网络请求 doGet 参数示例:
- *
- * @param url
- * 请求地址
- * @return 返回 String jsonResult;
- *
- */
- public String doGet(String url) {
- /** 创建HttpGet对象 **/
- HttpGet httpRequest = new HttpGet(url);
- httpRequest.setHeaders(this.getHeader());
- try {
- /** 保持会话Session **/
- /** 设置Cookie **/
- MyHttpCookies li = new MyHttpCookies(context);
- CookieStore cs = li.getuCookie();
- /** 第一次请求App保存的Cookie为空,所以什么也不做,只有当APP的Cookie不为空的时。把请请求的Cooke放进去 **/
- if (cs != null) {
- httpClient.setCookieStore(li.getuCookie());
- }
- /** 保持会话Session end **/
- /* 发送请求并等待响应 */
- HttpResponse httpResponse = httpClient.execute(httpRequest);
- /* 若状态码为200 ok */
- if (httpResponse.getStatusLine().getStatusCode() == 200) {
- /* 读返回数据 */
- strResult = EntityUtils.toString(httpResponse.getEntity());
- /** 执行成功之后得到 **/
- /** 成功之后把返回成功的Cookis保存APP中 **/
- // 请求成功之后,每次都设置Cookis。保证每次请求都是最新的Cookis
- li.setuCookie(httpClient.getCookieStore());
- } else {
- strResult = "Error Response: "
- + httpResponse.getStatusLine().toString();
- }
- } catch (ClientProtocolException e) {
- strResult = nullToString(e.getMessage());
- e.printStackTrace();
- } catch (IOException e) {
- strResult = nullToString(e.getMessage());
- e.printStackTrace();
- } catch (Exception e) {
- strResult = nullToString(e.getMessage());
- e.printStackTrace();
- } finally {
- httpRequest.abort();
- this.shutDownClient();
- }
- return strResult;
- }
- /**
- * 提供Post形式的访问网络请求 Post 参数示例: doPost 参数示例 List<NameValuePair> paramlist =
- * new ArrayList<NameValuePair>(); paramlist(new BasicNameValuePair("email",
- * "xxx@123.com")); paramlist(new BasicNameValuePair("address", "123abc"));
- * httpClient.doPost(url,paramlist);
- *
- * @param url
- * 请求地址
- * @param params
- * 请求参数
- * @return 返回 String jsonResult;
- * **/
- public String doPost(String url, List<NameValuePair> params) {
- /* 建立HTTPPost对象 */
- HttpPost httpRequest = new HttpPost(url);
- // 设置请求Header信息、
- httpRequest.setHeaders(this.getHeader());
- try {
- /** 添加请求参数到请求对象 */
- // boolean upFileFlag = false;// 是否有文件上传
- // MultipartEntity mpEntity = new MultipartEntity(
- // HttpMultipartMode.BROWSER_COMPATIBLE);
- // for (NameValuePair param : params) {
- // ContentBody contentBody = null;
- // File file = new File(param.getValue());
- // if (file.isFile()) {
- // contentBody = new FileBody(file);
- // upFileFlag = true;
- // } else {
- // contentBody = new StringBody(param.getValue(), Charset
- // .forName(HTTP.UTF_8));
- // }
- // mpEntity.addPart(param.getName(), contentBody);
- // }
- //
- // if (upFileFlag == true) {// 文件 上传
- // httpRequest.setEntity(mpEntity);
- // } else {
- /** 添加请求参数到请求对象 */
- httpRequest.setEntity(new UrlEncodedFormEntity(params,
- HTTP.UTF_8));
- // }
- /** 保持会话Session **/
- /** 设置Cookie **/
- MyHttpCookies li = new MyHttpCookies(context);
- CookieStore cs = li.getuCookie();
- /** 第一次请求App保存的Cookie为空,所以什么也不做,只有当APP的Cookie不为空的时。把请请求的Cooke放进去 **/
- if (cs != null) {
- httpClient.setCookieStore(li.getuCookie());
- }
- /** 保持会话Session end **/
- /** 发送请求并等待响应 */
- HttpResponse httpResponse = httpClient.execute(httpRequest);
- /** 若状态码为200 ok */
- if (httpResponse.getStatusLine().getStatusCode() == 200) {
- /* 读返回数据 */
- strResult = EntityUtils.toString(httpResponse.getEntity());
- /** 执行成功之后得到 **/
- /** 成功之后把返回成功的Cookis保存APP中 **/
- // 请求成功之后,每次都设置Cookis。保证每次请求都是最新的Cookis
- li.setuCookie(httpClient.getCookieStore());
- /** 设置Cookie end **/
- } else {
- strResult = "Error Response: "
- + httpResponse.getStatusLine().toString();
- }
- } catch (ClientProtocolException e) {
- strResult = "";
- // strResult = e.getMessage().toString();
- e.printStackTrace();
- } catch (IOException e) {
- strResult = "";
- // strResult = e.getMessage().toString();
- e.printStackTrace();
- } catch (Exception e) {
- strResult = "";
- // strResult = e.getMessage().toString();
- e.printStackTrace();
- } finally {
- httpRequest.abort();
- this.shutDownClient();
- }
- return strResult;
- }
- /** 得到 apache http HttpClient对象 **/
- public DefaultHttpClient getHttpClient() {
- /** 创建 HttpParams 以用来设置 HTTP 参数 **/
- httpParams = new BasicHttpParams();
- /** 设置连接超时和 Socket 超时,以及 Socket 缓存大小 **/
- HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000);
- HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000);
- HttpConnectionParams.setSocketBufferSize(httpParams, 8192);
- HttpClientParams.setRedirecting(httpParams, true);
- /**
- * 创建一个 HttpClient 实例 //增加自动选择网络,自适应cmwap、CMNET、wifi或3G
- */
- MyHttpCookies li = new MyHttpCookies(context);
- String proxyStr = li.getHttpProxyStr();
- if (proxyStr != null && proxyStr.trim().length() > 0) {
- HttpHost proxy = new HttpHost(proxyStr, 80);
- httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY,
- proxy);
- }
- /** 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient **/
- httpClient = new DefaultHttpClient(httpParams);
- httpClient.setHttpRequestRetryHandler(requestRetryHandler);
- return httpClient;
- }
- /** 得到设备信息、系统版本、驱动类型 **/
- private Header[] getHeader() {
- /** 请求头信息 end **/
- MyHttpCookies li = new MyHttpCookies(context);
- return li.getHttpHeader();
- }
- /** 销毁HTTPCLient **/
- public void shutDownClient() {
- httpClient.getConnectionManager().shutdown();
- }
- // /**
- // * 提供GET形式的访问网络请求 doGet 参数示例:
- // *
- // * @param url
- // * 请求地址
- // * @return 返回 String jsonResult;
- // *
- // */
- // public InputStream doDownFile(String url) {
- // /** 创建HttpGet对象 **/
- // HttpGet httpRequest = new HttpGet(url);
- // httpRequest.setHeaders(this.getHeader());
- // try {
- // /** 保持会话Session **/
- // /** 设置Cookie **/
- // MyHttpCookies li = new MyHttpCookies(context);
- // CookieStore cs = li.getuCookie();
- // /** 第一次请求App保存的Cookie为空,所以什么也不做,只有当APP的Cookie不为空的时。把请请求的Cooke放进去 **/
- // if (cs != null) {
- // httpClient.setCookieStore(li.getuCookie());
- // }
- // /** 保持会话Session end **/
- // /* 发送请求并等待响应 */
- // HttpResponse httpResponse = httpClient.execute(httpRequest);
- // /* 若状态码为200 ok */
- // if (httpResponse.getStatusLine().getStatusCode() == 200) {
- // /** 执行成功之后得到 **/
- // /** 成功之后把返回成功的Cookis保存APP中 **/
- // // 请求成功之后,每次都设置Cookis。保证每次请求都是最新的Cookis
- // li.setuCookie(httpClient.getCookieStore());
- // this.contentLength = httpResponse.getEntity()
- // .getContentLength();
- // /* 读返回数据 */
- // return httpResponse.getEntity().getContent();
- // } else {
- // strResult = "Error Response: "
- // + httpResponse.getStatusLine().toString();
- // }
- // } catch (ClientProtocolException e) {
- // strResult = e.getMessage().toString();
- // e.printStackTrace();
- // } catch (IOException e) {
- // strResult = e.getMessage().toString();
- // e.printStackTrace();
- // } catch (Exception e) {
- // strResult = e.getMessage().toString();
- // e.printStackTrace();
- // } finally {
- // // httpRequest.abort();
- // // this.shutDownClient();
- // }
- // this.contentLength = 0;
- // return null;
- // }
- /**
- * 异常自动恢复处理, 使用HttpRequestRetryHandler接口实现请求的异常恢复
- */
- private static HttpRequestRetryHandler requestRetryHandler = new HttpRequestRetryHandler() {
- // 自定义的恢复策略
- public boolean retryRequest(IOException exception, int executionCount,
- HttpContext context) {
- // 设置恢复策略,在发生异常时候将自动重试N次
- if (executionCount >= 3) {
- // 如果超过最大重试次数,那么就不要继续了
- return false;
- }
- if (exception instanceof NoHttpResponseException) {
- // 如果服务器丢掉了连接,那么就重试
- return true;
- }
- if (exception instanceof SSLHandshakeException) {
- // 不要重试SSL握手异常
- return false;
- }
- HttpRequest request = (HttpRequest) context
- .getAttribute(ExecutionContext.HTTP_REQUEST);
- boolean idempotent = (request instanceof HttpEntityEnclosingRequest);
- if (!idempotent) {
- // 如果请求被认为是幂等的,那么就重试
- return true;
- }
- return false;
- }
- };
- public long getContentLength() {
- return contentLength;
- }
- /**
- * 假如obj对象 是null返回""
- * @param obj
- * @return
- */
- public static String nullToString(Object obj){
- if(obj==null){
- return "";
- }
- return obj.toString();
- }
- }
[cpp] view plaincopy
- package com.hlj.padtwo.util.util_public.httputil;
- import org.apache.http.Header;
- import org.apache.http.client.CookieStore;
- import org.apache.http.message.BasicHeader;
- import android.content.Context;
- import android.database.Cursor;
- import android.net.Uri;
- import android.net.wifi.WifiManager;
- /**
- * http请求的缓存和一些公用的参数
- * @author helijun
- *
- */
- public class MyHttpCookies {
- /** 每页数据显示最大数 */
- private static int pageSize = 10;
- /** 当前会话后的cokie信息 */
- private static CookieStore uCookie = null;
- /** 公用的HTTP提示头信息 */
- private static Header[] httpHeader;
- /** HTTP连接的网络节点 */
- private static String httpProxyStr;
- /**http请求的公用url部分**/
- public static String baseurl = "http://192.168.50.56:5056/River";
- /**上下文对象**/
- Context context;
- public MyHttpCookies(Context context){
- this.context = context;
- /** y设置请求头 **/
- /** y设置请求头 **/
- Header[] header = {
- new BasicHeader("PagingRows", String.valueOf(pageSize)) };
- httpHeader = header;
- }
- /**
- * 增加自动选择网络,自适应cmwap、CMNET、wifi或3G
- */
- @SuppressWarnings("static-access")
- public void initHTTPProxy() {
- WifiManager wifiManager = (WifiManager) (context.getSystemService(context.WIFI_SERVICE));
- if (!wifiManager.isWifiEnabled()) {
- Uri uri = Uri.parse("content://telephony/carriers/preferapn"); // 获取当前正在使用的APN接入点
- Cursor mCursor =context. getContentResolver().query(uri, null, null, null,
- null);
- if (mCursor != null) {
- mCursor.moveToNext(); // 游标移至第一条记录,当然也只有一条
- httpProxyStr = mCursor.getString(mCursor
- .getColumnIndex("proxy"));
- }
- } else {
- httpProxyStr = null;
- }
- }
- public int getPageSize() {
- return pageSize;
- }
- public void setPageSize(int pageSize) {
- this.pageSize = pageSize;
- }
- public CookieStore getuCookie() {
- return uCookie;
- }
- public void setuCookie(CookieStore uCookie) {
- this.uCookie = uCookie;
- }
- public Header[] getHttpHeader() {
- return httpHeader;
- }
- public String getHttpProxyStr() {
- return httpProxyStr;
- }
- }
发表评论
-
android离线
2019-11-04 21:25 301https://www.jianshu.com/p/fdfc4 ... -
android 异步更新
2015-07-11 22:42 1505http://www.apkbus.com/forum.php ... -
仿微米
2015-06-26 10:22 0http://www.javaapk.com/source/4 ... -
仿微信
2015-06-26 10:21 1921http://www.javaapk.com/source/1 ... -
网易客户端
2015-06-26 10:20 1606http://www.javaapk.com/source/4 ... -
仿朋友圈
2015-06-26 10:18 1702http://www.javaapk.com/source/8 ... -
仿朋友圈
2015-06-26 10:13 1839http://www.eoeandroid.com/threa ... -
全国ABC查询
2015-06-26 10:07 1377IM 功能 环信云 信息统计 Umeng 分享Umeng 更新 ... -
android 判断网络
2015-06-25 16:00 1269http://www.cnblogs.com/renqingp ... -
android 多彩表格
2015-05-31 16:06 1480http://blog.csdn.net/conowen/ar ... -
android socket
2015-05-31 16:01 1649http://blog.csdn.net/conowen/ar ... -
微信播放语音3
2015-02-25 12:00 1437http://download.csdn.net/detail ... -
微信语音播放2
2015-02-25 11:57 1364http://download.csdn.net/detail ... -
微信语音播放
2015-02-25 11:56 1715http://www.apkbus.com/android-1 ... -
超强的资料整合
2015-01-05 11:04 1226http://zz563143188.iteye.com/bl ... -
最强开发资源平台大合集
2015-01-04 14:50 1888程序员代码应用开发平 ... -
Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
2014-09-04 15:45 1382http://blog.csdn.net/vipzjyno1/ ... -
android应用推广
2014-09-03 23:25 1317应用推广不必愁,有米 ... -
android 图片异步加载
2014-09-03 16:47 1135http://www.csdn.net/article/201 ... -
android hander的使用
2014-09-02 23:46 1364http://www.cnblogs.com/xiaoran1 ...
相关推荐
3. **网络请求工具类**:在Android应用中,网络通信是常见的需求,如`NetUtils`,可能会封装了HTTP请求(如使用Retrofit或OkHttp)、JSON解析(如Gson或Jackson)等功能,简化网络请求流程。 4. **图片处理工具类**...
总之,Android开发中的网络请求工具类,如基于OkHttp3.0的实现,是提高开发效率和应用性能的关键组件。通过合理封装和利用OkHttp3.0的特性,开发者可以构建稳定、高效的网络通信层,为应用的数据交互提供强大支持。...
例如,可能有一个“Generate Utils Class”或者类似的命令,点击后会弹出一个对话框,让你选择需要的工具类功能,比如选择添加一个网络请求工具类或一个日志打印工具类。 在生成工具类时,插件可能会提供预设的模板...
Android SDK(Software Development Kit)是开发者构建、调试和发布Android应用程序的重要工具集。在本文中,我们将深入探讨Android SDK中的"SDK Platforms"针对android-24版本的具体内容,以及这个版本在Android...
总的来说,ksoap2-android-assembly-2.4-jar和ksoap2-android-assembly-2.5.2-jar是Android开发者连接SOAP Web服务的重要工具。通过理解这两个版本的区别,开发者可以根据项目需求选择合适的版本,并利用它们提供的...
BDLocationUtil工具类封装了百度地图SDK中的定位接口,如LocationClient、OnMyLocationChangeListener等。它简化了配置过程,使得开发者不再需要直接处理复杂的初始化和设置监听器的步骤。例如,通过BDLocationUtil...
在Android应用开发中,工具类(Utils)和通用类(Common)是不可或缺的部分,它们能够帮助开发者快速实现一些常见的功能,提高代码复用性,降低项目复杂度。"Android-轻量级android工具类辅助类通用类"这个项目提供...
在Android开发过程中,工具类(Utility Class)是开发者经常使用的代码模块,它们提供了一系列静态方法,方便我们在项目中快速调用,以实现特定功能。"AndroidUtilCode"是一个全面的Android工具类库,包含了多种实用...
- Android开发中常见的工具类包括:字符串工具类(处理字符串格式化、拼接等)、日期时间工具类(格式化日期和时间)、网络工具类(检查网络状态、发起网络请求)、图片处理工具类(裁剪、压缩、加载图片)等。...
在Android平台上进行蓝牙低功耗(Bluetooth Low Energy, BLE)开发时,`Bluetooth-LE-Library---Android-master` 是一个非常重要的工具库。这个库专为Android应用开发者设计,简化了与BLE设备交互的复杂性,使开发者...
总之,通过创建一个`HttpClientUtil`工具类,我们可以方便地处理Android应用中的HTTP请求。虽然`HttpClient`已被弃用,但在某些场景下,它仍然是一种可行的选择。不过,考虑到更好的性能和更现代的API,建议使用如`...
7. **权限管理**:在Android 5.1.1中,应用的权限管理有了进一步的细化,开发者需要在AndroidManifest.xml中声明所需的权限,并在运行时请求某些敏感权限。 8. **适配性考虑**:针对不同的Android版本,开发者需要...
在Android开发过程中,工具类(Utility Classes)是开发者经常使用的代码模块,它们包含了各种实用功能,可以帮助我们简化常见的编程任务。"Android 工具类android-common"是一个专门为Android平台设计的集合,它...
总之,`RxRetrofitUtils`工具类是提高Android应用网络请求效率和代码质量的好帮手。它将`Retrofit`和`RxJava`的强大力量整合到一个简洁的工具中,使得开发者能够更加专注于业务逻辑,而非网络请求的实现细节。在实际...
打开"spring-android-core-1.0.0.RELEASE-sources.jar",我们可以看到Spring for Android的源代码,包括各种核心类、接口和工具类。例如,`AndroidApplicationContext`继承自Spring的`ApplicationContext`,提供了...
在Android开发中,kSOAP2-android是开发者常用的工具,用于与服务器端的Web服务进行交互。标题中的"ksoap2-android-assembly-2.4-jar-with-dependencies"是一个包含所有依赖的jar包,它使得开发者无需额外处理依赖...
`Android-openup`是一个针对这一需求而设计的工具类,它采用Golang语言编写,实现了UPnP端口映射的功能。下面我们将详细探讨UPnP、端口转发以及如何在Android应用中使用`Android-openup`。 1. UPnP简介: UPnP是一...
《Android异步HTTP框架——..."android-async-http-1.4.3"作为Android开发中的一个重要工具,极大地简化了网络请求的实现,提高了开发效率。理解并熟练运用这个框架,对于任何Android开发者来说都是一项必备技能。
在Android开发过程中,有时我们需要利用各种工具类来提高代码的可重用性和效率。"Android-CakeUtility"项目就是这样一个工具集,它借鉴了CakePHP框架中的实用工具类,为Android开发者提供了方便的功能。让我们详细...
3. **网络请求工具类**: - `NetworkUtils`:包含网络状态检测、URL处理、HTTP请求等功能,对于网络异常处理和数据抓取很有帮助。 4. **数据序列化与反序列化工具类**: - `GsonUtils`:使用Google的Gson库进行...