HttpClient的一种简单实现Demo
1 /** 2 * 测试HttpClient2种请求网络方式的Activity 3 * get和post 4 * 5 */ 6 public class HttpClientActivity extends Activity { 7 private HttpParams httpParams ; 8 private HttpClient httpClient ; 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_httpclient); 13 EditText et1 = (EditText) this.findViewById(R.id.et1); 14 List<NameValuePair> params = new ArrayList<NameValuePair>(); 15 params.add(new BasicNameValuePair("email", "firewings.r@gmail.com")); 16 params.add(new BasicNameValuePair("password", "954619")); 17 params.add(new BasicNameValuePair("remember", "1")); 18 params.add(new BasicNameValuePair("from", "kx")); 19 params.add(new BasicNameValuePair("login", "登录")); 20 params.add(new BasicNameValuePair("refcode", "")); 21 params.add(new BasicNameValuePair("refuid", "0")); 22 Map params2 = new HashMap(); 23 params2.put("hl", "zh-CN"); 24 params2.put("source", "hp"); 25 params2.put("q", "haha"); 26 params2.put("aq", "f"); 27 params2.put("aqi", "g10"); 28 params2.put("aql", ""); 29 params2.put("oq", ""); 30 String url2 = "http://www.google.cn/search"; 31 String url = "http://wap.kaixin001.com/home/"; 32 33 getHttpClient(); 34 et1.setText(doPost(url, params)); 35 // et1.setText(doGet(url2, params2)); 36 37 } 38 /** 39 * get 方式发送网络请求 40 * @param url url地址 41 * @param params 请求参数 42 * @return 返回请求结果statusLine状态行数据 43 */ 44 public String doGet(String url,Map params){ 45 /* 建立HTTPGet对象 */ 46 String paramStr = ""; 47 Iterator iter = params.entrySet().iterator(); 48 while(iter.hasNext()){ 49 Map.Entry entry = (Entry) iter.next(); 50 Object key = entry.getKey(); 51 Object val = entry.getValue(); 52 paramStr += paramStr = "&" + key + "=" + val ; 53 } 54 if(!paramStr.equals("")){ 55 paramStr.replaceFirst("&", "?"); 56 url += paramStr; 57 } 58 HttpGet httpRequest = new HttpGet(url); 59 String strResult = "doGetError"; 60 try { 61 /* 发动请求并等待回应 */ 62 HttpResponse httpResponse = httpClient.execute(httpRequest); 63 /* 若状态码为200 ok */ 64 if(httpResponse.getStatusLine().getStatusCode() == 200){ 65 /* 读返回数据 */ 66 strResult = EntityUtils.toString(httpResponse.getEntity()); 67 }else{ 68 strResult = "Error Response : " + httpResponse.getStatusLine().toString(); 69 } 70 } catch (ClientProtocolException e) { 71 strResult = e.getMessage().toString(); 72 e.printStackTrace(); 73 } catch (IOException e) { 74 strResult = e.getMessage().toString(); 75 e.printStackTrace(); 76 } 77 return strResult; 78 } 79 /** 80 * 81 * @param url 82 * @param params 83 * @return 服务器返回的数据 httpResponse.getEntity() 84 */ 85 public String doPost(String url,List<NameValuePair> params){ 86 /* 建立HTTPPost对象 */ 87 HttpPost httpRequest = new HttpPost(url); 88 String strResult = "doPostError"; 89 try { 90 /* 添加请求参数到请求对象 */ 91 httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8)); 92 /* 发送请求并等待响应 */ 93 HttpResponse httpResponse = httpClient.execute(httpRequest); 94 /* 若状态码 为 200 */ 95 if(httpResponse.getStatusLine().getStatusCode() == 200){ 96 /* 读返回数据 */ 97 strResult = EntityUtils.toString(httpResponse.getEntity()); 98 }else{ 99 strResult = "Error Response : " + httpResponse.getStatusLine().toString(); 100 } 101 } catch (ClientProtocolException e) { 102 strResult = e.getMessage().toString(); 103 e.printStackTrace(); 104 } catch (IOException e) { 105 strResult = e.getMessage().toString(); 106 e.printStackTrace(); 107 } 108 return strResult; 109 } 110 /** 111 * 获取一个HttpClient对象 112 * @return 返回一个HttpClient对象 113 */ 114 public HttpClient getHttpClient(){ 115 //创建HttpParams以用来设置HTTP参数(这一部分不是必须的) 116 this.httpParams = new BasicHttpParams(); 117 //设置连接超时和socket超时,以及socket缓存大小 118 HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000); 119 HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000); 120 HttpConnectionParams.setSocketBufferSize(httpParams, 8196); 121 //设置重定向,默认为true 122 HttpClientParams.setRedirecting(httpParams, true); 123 //设置user agent 124 String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2) Gecko/20100115 Firefox/3.6"; 125 HttpProtocolParams.setUserAgent(httpParams, userAgent); 126 //创建一个HttpClient实例 127 //注意 HttpClient httpClient = new HttpClient();是Commons HttpClient 中的用法 128 //在Android 1.5 中我们需要使用 Apache 的缺省实现 DefaultHttpClient 129 httpClient = new DefaultHttpClient(); 130 return httpClient; 131 } 132 }
转载于:https://www.cnblogs.com/wangziqiang/p/3769898.html
HttpClient的一种简单实现Demo相关推荐
- Dubbo入门介绍---搭建一个最简单的Demo框架
Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbo zookeeper 更多 个人分类: ...
- Ibatis.Net 学习手记一 简单的Demo
最近在做游戏推广的需求,趁公司给了不少充足的时间...再一次看了下自己以前学过的IbatisDemo,同时拿出来分享一下 Ibatis.Net的官方文档地址为 http://www.mybatis.o ...
- android无感刷新下拉分页,GitHub - TakWolf/Android-RefreshAndLoadMore-Demo: 一种简单的并且优雅的方式实现下拉刷新和加载更多的分页效果。...
Android - RefreshAndLoadMore Demo 一种简单的并且优雅的方式实现下拉刷新和加载更多的分页效果. 包含 ListView 和 RecyclerView 两种组件的对应实现 ...
- 两个简单的Demo示例向读者展示Flash和ASP.NET交互原理以及过程
ASP.NET与FLASH交互学习了ASP.NET的基础知识之后,终于等到学习交互的时候了.请大家和我一起来进行让人激动的交互吧!本章我将用两个简单的Demo示例向读者展示Flash和ASP.NET交 ...
- Dubbo入门----搭建一个最简单的Demo框架
Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. ...
- android 观察者模式的简单demo,一个简单的demo彻底搞懂观察者模式
介绍 观察者模式也被称为发布-订阅(Publish/Subscribe)模式,它属于行为型模式的一种.观察者模式定义了一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听.当这个主题对象状态变 ...
- 【unity】快速了解游戏制作流程-制作九宫格简单游戏demo
前言 hi~大家好呀!欢迎来到我的unity学习笔记系列~,本篇我会简单的记录一下游戏流程并且简单上手一个通过九宫格移动到指定位置的小游戏,话不多说,我们直接开始吧~ 本篇源自我看B站一位up主的视频 ...
- 一种简单快速有效的图像暗部增强/亮度均衡算法
2020/10/27更新:之前为克服光晕效应尝试过引导滤波,惜哉其他地方犯了个小错误以致未达到目标,处理的结果虽然保边但却过于模糊.后期修正之后再次尝试便得到了预期的效果.现将引入了引导滤波去光晕的程 ...
- Dubbo入门---搭建一个最简单的Demo框架
Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. ...
最新文章
- SharePoint中的列表(List) 与Content Type 之五
- centos 自动挂载磁盘
- 转 ofbiz的webservice接口提供(1)-WSDL的生成
- linux下踢出已登录用户
- springboot搭建的ssm项目
- NYOJ 767 因子和
- 强化学习2——有模型强化学习MDP(搬砖马尔科夫,贝尔曼等式)
- django默认数据库sqlite3改为mysql
- 计算机组成与结构PLA,计算机组成与结构.doc
- c++语言中的循环语句有,C++语言中的循环语句
- (0,eval)('this')与eval的区别
- c++编译器对类的处理
- 电脑切换窗口快捷键_计算机二级常用快捷键
- 使用 profile 进行python代码性能分析
- 浅谈TCP/IP协议中TCP与UDP的区别
- c语言课程设计报告 数独,C语言课程设计报告数独.pdf
- ET vs Ad hoc
- 十字路口红绿灯plc程序_西门子PLC编程实例详解十字路口交通灯自动控制系统!...
- 谈下我曾经做过的一个心理健康管理系统
- 跑步节奏音乐匹配Android项目开发和调试经验
热门文章
- 【原创】ASP.NET C# 盗取中国银行汇率表
- Publish or Perish, I got it now~~~~~~~~
- mysql中blob_MySQL中的BLOB类型
- date比较大小 mybatis_MyBatis版本升级导致OffsetDateTime入参解析异常问题复盘
- es文件浏览器鸿蒙,手机文件一团糟 八款安卓文件管理器来救急
- linux java 栈_关于Java中栈与堆的思考
- matlab计算多张图像的灰度直方图_MATLAB图像处理基本操作
- R - 0 or 1 HDU - 4370
- D - Sand Fortress CodeForces - 985D
- mysql with语句_MySQL列举数据库(SHOW DATABASES语句)