android联网程序,android 联网 HttpClient
可以使用 Android 集成进来的 apache 中关于联网的API。
HttpParams : 保存Http请求设定的参数对象
HttpConnectionParams :提供对Http连接参数进行设定的方法,比如 连接超时时间 等。
HttpClient :发起Http连接请求的对象,
HttpResponse :Http 请求返回的响应
最后,其实apache还是提供了释放 连接资源的方法的,不过是埋得深了点。
httpClient.getConnectionManager().shutdown();
这个shutdown并不是将手机网络断掉,而是将建立Http连接请求时所分配的资源释放掉
工具类
/*
* post请求
*/
public static String post(RequestVo vo){
//使用DefaultHttpClient创建HttpClient实例
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(vo.context.getString(R.string.host).concat(vo.context.getString(vo.requestUrl)));
//构建HttpPost
HttpParams params = new BasicHttpParams();//
params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 20000); //连接超时
HttpConnectionParams.setSoTimeout(params, 30*1000); //响应超时
post.setParams(params);
String str = null;
/** 保持会话Session **/
/** 设置Cookie **/
MyHttpCookies li = new MyHttpCookies(vo.context);
CookieStore cs = li.getuCookie();
/** 第一次请求App保存的Cookie为空,所以什么也不做,只有当APP的Cookie不为空的时。把请请求的Cooke放进去 **/
if (cs != null) {
client.setCookieStore(li.getuCookie());
System.out.println("session");
}
/** 保持会话Session end **/
try {
//将由Map存储的参数转化为键值参数
if(vo.requestDataMap!=null){
HashMap map = vo.requestDataMap;
ArrayList pairList = new ArrayList();
for(Map.Entry entry:map.entrySet()){
BasicNameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue());
pairList.add(pair);
}
//使用编码构建Post实体
HttpEntity entity = new UrlEncodedFormEntity(pairList,"UTF-8");
//设置Post实体
post.setEntity(entity);
}
//执行Post方法
HttpResponse response = client.execute(post);//包含响应的状态和返回的结果==
if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
//获取Cookie
li.setuCookie(client.getCookieStore());
//获取返回实体
String result = EntityUtils.toString(response.getEntity(),"UTF-8");
Log.e(NetUtil.class.getSimpleName(), result);
try {
str = result;
} catch (Exception e) {
Log.e(NetUtil.class.getSimpleName(), e.getLocalizedMessage(),e);
}
return str;
}
} catch (ClientProtocolException e) {
Log.e(NetUtil.class.getSimpleName(), e.getLocalizedMessage(),e);
return null;
} catch (IOException e) {
Log.e(NetUtil.class.getSimpleName(), e.getLocalizedMessage(),e);
return null;
}
return null;
}
/**
* get请求
* @param vo
* @return
*/
public static String get(RequestVo vo, String url){
DefaultHttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
String str = null;
/** 保持会话Session **/
// /** 设置Cookie **/
MyHttpCookies li = new MyHttpCookies(vo.context);
CookieStore cs = li.getuCookie();
/** 第一次请求App保存的Cookie为空,所以什么也不做,只有当APP的Cookie不为空的时。把请请求的Cooke放进去 **/
if (cs != null) {
client.setCookieStore(li.getuCookie());
System.out.println("session");
}
// /** 保持会话Session end **/
try {
HttpResponse response = client.execute(get);
if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
li.setuCookie(client.getCookieStore());
String result = EntityUtils.toString(response.getEntity(),"UTF-8");
Log.e(NetUtil.class.getSimpleName(), result);
try {
str = result;
} catch (Exception e) {
Log.e(NetUtil.class.getSimpleName(), e.getLocalizedMessage(),e);
}
return str;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* http请求的缓存和一些公用的参数
* @author llc
*
*/
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://www.2cto.com /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;
}
}
注:
1. 使用POST方式时,传递参数必须使用NameValuePair数组
2. 使用GET方式时,通过URL传递参数,注意写法
3. 通过setEntity方法来发送HTTP请求
4. 通过DefaultHttpClient 的 execute方法来获取HttpResponse
5. 通过getEntity()从Response中获取内容
android联网程序,android 联网 HttpClient相关推荐
- android连接程序,android程序如何连接真机进行测试
android 如何连真机测试 个人认为第三种方法更易理解 1. 设置android手机为USB调试模式.步骤: menu---> 设置 ---> 应用程序 ---> 开发 , 选择 ...
- android hook 程序,Android hook框架之Xposed插件开发
上一篇讲了Android hook框架Cydia,这一篇是Android hook的另一个框架Xposed,Xposed是一款广泛应用于安卓领域的开源框架. 其原理是Xposed框架主要通过替换/sy ...
- 用自己的手机调试Android应用程序——Android Studio
最近在学习Android应用开发,一般来说都是用AVD建立的虚拟手机来调试和运行Android应用程序.不过自己的手机也是Android的,所以就是尝试用自己的手机来调试程序.不过在调试之前先做好手机 ...
- android 获取程序,Android获取桌面应用程序
转载请注明出处,谢谢:http://blog.csdn.net/harryweasley/article/details/50057029 首先在看这个博客之前, 你可以先看下这个博客,http:// ...
- android 照片墙程序,Android照片墙应用
本文主要内容 照片墙应用介绍 缓存使用思路 多线程使用 杂谈 记得本人工作之后,手头上第一个活就是做一个本地壁纸展示程序,当时正流行1080P的屏幕,为了展示屏幕效果,壁纸图片巨大无比,轻松突破10M ...
- 调用android邮件程序,Android开发中怎样调用系统Email发送邮件(多种调用方式)
我们都知道,在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外. 在Android中,调用Email有三种类型的Intent: Intent.ACTION ...
- Android冻结程序,Android Studio 3.0和应用程序冻结
我已经将我的 android工作室从2.x更新到android 3.0 stable. 从那时起,当我尝试使用cyanogenmod 12.1(android 5.1.1)将应用程序推送到我的Nexu ...
- 如何导出android studio程序,Android Studio 如何导出 Jar 给 Unity 使用
大致步骤如下:1.创建新的 Android Studio 工程2.为此 Android Studio 工程创建 Android Library 类库(也就是一个 Module)(后面就是用它生成 ja ...
- android su 程序,android 开发 制作自己的su
所需材料: ①.su.c ②.Android.mk 以上玩意可以从源码中获取,或者从网上下载! 如果是从android源码中提取的su,请自行注释掉权限检查部分哈~~~ /// 1. Ubuntu l ...
最新文章
- SAP QM 将业务上的偏差管理集成进入SAP系统?
- (八)整合spring cloud云服务架构 - commonservice-eureka 项目构建过程
- concurrent map使用
- 安全狗护航金砖厦门会晤 圆满完成任务
- 使用Apollo通过WebSocket通过STOMP轻松进行消息传递
- 一条正确的Java职业生涯规划,帮你突破瓶颈
- Delphi中TMediaPlayer播放音乐出现no MCI device open的错误的解决方法
- Linux内核4.14 LTS发布:那些最新最好的功能特性
- R语言大作业(二):上海市人口普查数据分析
- PGIS大数据量点位显示方案
- 太极图正确画法_八卦太极图的正确画法
- dell r710重装系统_DELL R710系统安装指南10页
- Python3正则匹配re.split,re.serach,re.sub,re.finditer及re.findall函数用法详解
- 数学中的哈斯图如何构造?附实例
- apicloud 项目常用插件
- 《人生算法》(七)认定方向、坚定执行
- 2021-09-252021年中式烹调师(中级)考试技巧及中式烹调师(中级)证考试
- 2个阶乘什么意思_两个阶乘符号连在一起是什么意思
- Scala语法(一) 基础语法(变量常量判断循环数组集合)
- BlockingQueue(阻塞队列)
热门文章
- Matlab中数据拟合函数lsqcurvefit的使用方法与常见问题
- [云炬学英语]每日一句2020.9.1
- 解决IE正常模式与兼容性模式的办法
- Delphi指针大全
- C++/CLI中的资源清理(Destructor,Finalizer)
- 在 C 中引用汇编语言定义的 .globl 变量
- 使用u-boot的tftp下载功能烧写程序到Nand Flash ——韦东山嵌入式Linux学习笔记09
- 8086键盘输入实验——《x86汇编语言:从实模式到保护模式》读书笔记07
- SpringBoot中请求映射的原理(源码)
- 汽车车牌识别系统实现(四)--字符识别+代码实现