- 浏览: 271311 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
flyingsnowff:
支付宝官方在线文档中心:https://doc.open.al ...
如何集成支付宝官方文档 -
timer_yin:
果然是这样
[转帖] 安装Eclipse插件长时间卡在 calculating requirements and dependencies -
dai_lm:
lyx0224 写道强~~~~~过奖,只是总结了前人的智慧,拼 ...
通过Wifi实现设备间的通信 -
lyx0224:
强~~~~~
通过Wifi实现设备间的通信 -
Goro:
帅!
自己封装的支持自动对焦的CameraView
目的是为了不依赖第三方的jar包进行网络请求(如:commons-httpclient.jar)
修改了一下,可以自定义请求的Header,增加了对POST表单数据的支持。
1. 建立一个连接配置类
2. 封装请求类
3. 调用
GET请求
POST请求
这个几乎就是完整的代码了呀
修改了一下,可以自定义请求的Header,增加了对POST表单数据的支持。
1. 建立一个连接配置类
class UserAgentConfig { public String host; public String scheme = "http"; public int port = 80; public int timeoutConnection = 3000; public int timeoutSocket = 20000; public String username = ""; public String password = ""; }
2. 封装请求类
public class HttpRequest { private String mUrl; private UserAgentConfig mConfig = null; private HashMap<String, String> mHeaders = null; private HttpEntity mBody = null; private int mStatus = -1; public HttpRequest(String url) { mUrl = url; } public void addHeader(String key, String value) { if (mHeaders == null) mHeaders = new HashMap<String, String>(); mHeaders.put(key, value); } public void clearHeader() { mHeaders.clear(); mHeaders = null; } public void setConfig(UserAgentConfig config) { mConfig = config; } public void setPostBody(List<BasicNameValuePair> body) { try { mBody = new UrlEncodedFormEntity(body, "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } public void setPostBody(String body) { try { mBody = new StringEntity(body); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } public void execute() throws ClientProtocolException, IOException { httprequest(); } public int getStatusCode() { return mStatus; } /** * get "Stream" as response * * @return response in stream * @throws IOException * @throws ClientProtocolException */ public InputStream getStream() throws ClientProtocolException, IOException { HttpEntity entity = httprequest(); InputStream ret = null; if (entity != null) { try { byte[] b = EntityUtils.toByteArray(entity); ret = new ByteArrayInputStream(b); } finally { release(entity); } } return ret; } /** * get "String" as response * * @return response in string * @throws IOException * @throws ClientProtocolException */ public String getString() throws ClientProtocolException, IOException { HttpEntity entity = httprequest(); String ret = null; if (entity != null) { try { ret = EntityUtils.toString(entity); } finally { release(entity); } } return ret; } /** * release connection resource * * @param entity */ private static void release(HttpEntity entity) { try { entity.consumeContent(); } catch (IOException e) { e.printStackTrace(); } } /** * get "HttpEntity" as response * * @return * @throws IOException * @throws ClientProtocolException */ private HttpEntity httprequest() throws ClientProtocolException, IOException { System.out.println(mUrl); DefaultHttpClient client = null; HttpEntity entity = null; BasicHttpParams httpParameters = new BasicHttpParams(); if (mConfig != null) { // set connection timeout HttpConnectionParams.setConnectionTimeout(httpParameters, mConfig.timeoutConnection); } client = new DefaultHttpClient(httpParameters); DefaultHttpRequestRetryHandler retryHandler = new DefaultHttpRequestRetryHandler( 3, true); client.setHttpRequestRetryHandler(retryHandler); // set username & password if available if (mConfig != null && !(isEmpty(mConfig.username) && isEmpty(mConfig.password))) { AuthScope as = new AuthScope(mConfig.host, mConfig.port); UsernamePasswordCredentials upc = new UsernamePasswordCredentials( mConfig.username, mConfig.password); client.getCredentialsProvider().setCredentials(as, upc); } // check get or post method by params HttpRequestBase method = null; if (mBody == null) { method = new HttpGet(mUrl); } else { method = new HttpPost(mUrl); ((HttpPost) method).setEntity(mBody); } // set request header if (mHeaders != null) { Iterator<?> iter = mHeaders.entrySet().iterator(); while (iter.hasNext()) { Map.Entry<?, ?> entry = (Entry<?, ?>) iter.next(); String key = (String) entry.getKey(); String val = (String) entry.getValue(); method.setHeader(key, val); } } // get response HttpResponse response = null; if (mConfig == null || isEmpty(mConfig.host) || isEmpty(mConfig.scheme)) { // only URL is available response = client.execute(method); } else { BasicHttpContext localContext = new BasicHttpContext(); BasicScheme basicAuth = new BasicScheme(); localContext.setAttribute("preemptive-auth", basicAuth); HttpHost targetHost = new HttpHost(mConfig.host, mConfig.port, mConfig.scheme); response = client.execute(targetHost, method, localContext); } mStatus = response.getStatusLine().getStatusCode(); entity = response.getEntity(); return entity; } /** * Check the string is valuable or not * * @param s * @return true if s is null or s.length() == 0 false otherwise */ private boolean isEmpty(String s) { return s == null || s.length() == 0; } }
3. 调用
GET请求
HttpRequest request = new HttpRequest("..."); request.execute();
UserAgentConfig config = new UserAgentConfig(); config.host = "..."; config.username = "..."; config.password = "..."; HttpRequest request = new HttpRequest("..."); request.setConfig(config); System.out.println(request.getString());
POST请求
HttpRequest request = new HttpRequest("..."); request.addHeader("...", "..."); request.setPostBody("...."); request.execute(); System.out.println(request.getStatusCode());
评论
2 楼
dai_lm
2011-09-14
qinweiping 写道
有完整的源码吗 发我一份 995308963@qq.com
这个几乎就是完整的代码了呀
1 楼
qinweiping
2011-09-13
有完整的源码吗 发我一份 995308963@qq.com
发表评论
-
获取Android Device的信息
2013-12-26 15:47 1440String phoneInfo = "PROD ... -
看雪学院-Android安全
2013-11-25 09:40 940http://bbs.pediy.com/forumdispl ... -
Toast原来也可以多样化
2013-09-18 13:48 1161Style 1: 默认 Toast def = Toast ... -
Google Map API V2
2013-05-13 13:37 2152以后如果要开发包含google map的程序就更麻烦咯 htt ... -
用OpenGL实现无限循环的coverflow
2013-04-26 14:16 4774网上找了很久,都是用Gallery实现的,效果不是很满意,结果 ... -
如何集成支付宝官方文档
2013-02-08 11:24 4474官方文档下载地址 https://b.alipay.com/o ... -
[转帖]裁剪图片
2013-01-30 17:22 927原帖:http://www.linuxidc.com/Linu ... -
MonkeyRunner的使用
2013-01-29 13:06 9648要使用MonkeyRunner,就要 ... -
重复执行某段代码
2012-12-29 14:36 1561用handler就可以了 private Handler ... -
选择音频的输出方式
2012-12-12 15:00 1942可以选择用耳机还是扬声器播放(蓝牙的就留到下次吧),要求SDK ... -
使FrameLayout的Gravity等于Center
2012-12-06 16:42 1701由于无法设置FrameLayout的Gravity,所以只能通 ... -
在Android上模拟MetroUI
2012-10-31 15:49 2580在Android上模拟WP7的MetroUI MetroIt ... -
Uri.Builder与String互转
2012-08-14 15:56 2285Uri.Builder -> String Uri. ... -
判断屏幕尺寸
2012-07-17 10:21 1844// support from API 4 final ... -
自己封装的支持自动对焦的CameraView
2012-07-12 13:52 3590import java.io.BufferedOutp ... -
ADT 离线包下载地址
2012-07-06 14:32 1980更新ADT真是件苦恼的事啊 20.0.0的下载地址 http ... -
通过Wifi实现设备间的通信
2012-06-05 15:19 1992服务器端,建立监听(方法更新,可以同时连接多个Client) ... -
IP地址的获取及解析
2012-06-05 13:31 1244获取IP地址 WifiManager wifiManage ... -
判断网络是否有效
2012-05-28 17:32 939protected boolean isInternetA ... -
悬浮窗
2012-05-28 17:21 3034类似于360监视网络速度的那个悬浮窗 public cl ...
相关推荐
嵌入式Linux系统学习者:将Android作为一个集Linux核心和应用层程序于一体的系统进行学习,并可以利用Android的仿真环境运行和调试程序。 读者在学习本书的过程中,应尽量对照本书的框图和手头的Android源代码,...
利用Android自带的ConnectivityManager类 有时候连上了wifi,但这个wifi是上不了网的,我们可以通过ping www.baidu.com来判断是否可以上网 也可以利用get请求访问www.baidu.com,如果get请求成功,说明可以上网 1...
鉴于市场上用户的手机型号、种类、屏幕分辨率等参差不齐,传统方式根据主流系统分别开发相应的系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合的方式进行移动端Web系统的设计研发工作...
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...
Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证...
RPC_Framework #####基于TCP协议的远程过程调用框架——客户端,服务端基于TCP...直接利用工程自带单元测试可以使用服务端,因为彼此都使用json协议。如果想支持其他数据传输协议,只需替换数据层即可。 #####知识扩展
此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...