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", "[email protected]"));
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 }

HttpClient的一种简单实现Demo,布布扣,bubuko.com

时间: 2024-10-14 20:27:20

HttpClient的一种简单实现Demo的相关文章

Dubbo入门---搭建一个最简单的Demo框架

Dubbo背景和简介 Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起. 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本. 缺点:单一的系统架构,使得在开发过程中,占用的资源越来越多,而且随着流量的增加越来越难以维护 垂直应用框架(MVC) 垂直应用架构解决了单一应用架构所面临的扩容问题,流量能够分散到各个子系统当中,且系统的体积可控,一定程度上降低了开发人员之间协同以及维护的成本,提升了开发效率. 缺点:但是在垂直架构

【Cocos2d-x】 HttpClient 网络通信(Http)的简单应用

Cocos2dx 为我们封装了在cocos2dx中http的网络框架,其文件在cocos2dx引擎包的extensions\network文件下的 HttpClient.HttpRequest .HttpResponse. 使用CCHttprequest联网有两种方法get和post.get和post都能够从server获取数据,这两种联网的方法有所不同.以下简单的区分一下 1.get提交的时候数据放到URL后面,post放在HTTP协议消息体中. 2.get数据量大小有限制,2KB,post理

一种简单快速的模板解析方法,活用with javascript版

//一种简单快速的模板解析方法,活用with var parseTpl = function( str, data ) { var tmpl = 'var __p=[];' + 'with(obj||{}){__p.push(\'' + str.replace( /\\/g, '\\\\' ) .replace( /'/g, '\\\'' ) .replace( /<%=([\s\S]+?)%>/g, function( match, code ) { return '\',' + code.

Mybatis_reveiw之Mybatis官方的一个很简单的Demo

上学的时候,一个老师讲了个故事,这个故事的大意是,我们有很多种方式去削苹果,第一种方式,使用指甲刀,第二种方式,使用机床,第三种方式,使用手摇的那种削平果小工具.我们当然都能够完成这个简单的需求,但是使用指甲刀削出来的苹果一定比较坑坑洼洼,不够美观,而且可能会让人感觉到有点没啥食欲.使用机床呢?可能会造成大量的浪费,原本一个美观大方的苹果变成了只能啃几口的正方形.第三个,因为是专门为了削苹果皮而设计的,理论上是最合适用来解决削苹果这个问题的解决方案. 一个好的架构,其实要做的事情是非常简单的,除

Mybatis 3.2.7 简单入门Demo

对最新版本 Mybatis 3.2.7 做了一个demo,做个记录 需要的基本jar: mybatis-3.2.7.jar mysql-connector-java-5.1.27.jar 首先配置xml文件 mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config

Spring源码学习:第1步--在Spring源码中添加最简单的Demo代码

为了最大程度地贴近Spring源码并进行学习,一种比较直接的做法是:直接在Spring源码中加入Demo代码,并进行调试. 参照以前使用Spring的经验,Spring最简单的使用方法是:一个实体类.一个Xml配置文件.再加个测试方法.而对于脱离源码的使用,需要至少引入 spring-context 依赖.于是,猜想,在Spring源码中是否可以直接在 spring-context 模块中添加上述最简单的代码呢? 说干就干,在 spring-context 模块中新建一个实体类(Person,位

Qt实现软件自动更新的一种简单方法

前言 最近在学习Qt开发上位机,想实现一个检查更新的功能,网上搜索了一大圈,发现实现过程都很复杂,关键是代码看不懂,所以就自己开发一种简单的方式来实现.实现效果如下: 点击"检查更新"按钮,如果当前版本低于远程的版本,那么会弹出如下窗口,提示更新,并显示远程的的版本号,更新时间,更新说明,如下图所示: 如果点击"去下载",那么会调用系统默认浏览器,直接创建下载任务.点击"不更新",则取消更新. 如果当前版本号和远程一致,那么会提示"已经

java 程序执行输出有两种简单方式

java 程序执行输出有两种简单方式: 1. System.out.println("需要输出的内容"): 该方法可参看运行一个简单的Java程序 结果图: 2. System.out.print("需要输出的内容"): 1 public class HelloWorld 2 { 3 //Java程序的入口方法,程序将从这里开始运行 4 public static void main(String[] args) 5 { 6 //向控制台打印一条语句 7 Syste

两种简单实现菜单高亮显示的JS类(转载)

两种简单实现菜单高亮显示的JS类 近期在写一个博客管理后台的前端,涉及在同一页面两种高亮显示当前菜单的需求.记得当年写静态页时,为了实现高亮都是在每个页面加不同的样式,呵.高亮显示我觉得对于web前端来说,是比较常用到的效果,正好此次又要用到,特地整理出我所写的两种高亮类. 其实思路很简单,第一种方法是通过遍历链接组的href值,通过indexOf判断href值是否被包含在浏览器当前url值中.此方法有一定局限,比如对于iframe内的菜单是不能这样判断的; 第二种方法适用范围更广一样,实现思路