- 浏览: 188583 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
arpenker:
这个命令行运行的前提是要基于LINUX服务器能够自己手动安装F ...
linux java转amr为mp3 -
smith789:
使用的类都废弃了
HttpUtil工具类 -
s21109:
自定义TabHost之手势切换Tab视图(不带动画)
/** * 增强型Http辅助类 * @author zhouli * */ public class EnhancedHttpUtil { private static HttpClient httpClient; private static final String TAG = "HttpUtil"; /** * 获得线程安全的HttpClient对象,能够适应多线程环境 * @return */ public static synchronized HttpClient getHttpClient() { if (null == httpClient) { HttpParams params = new BasicHttpParams(); // 设置一些基本参数 HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, "UTF-8"); HttpProtocolParams.setUseExpectContinue(params, true); HttpProtocolParams .setUserAgent( params, "Mozilla/5.0(Linux;U;Android 2.2.1;en-us;Nexus One Build.FRG83) " + "AppleWebKit/553.1(KHTML,like Gecko) Version/4.0 Mobile Safari/533.1"); // 超时设置 /* 从连接池中取连接的超时时间 */ ConnManagerParams.setTimeout(params, 1000); /* 连接超时 */ HttpConnectionParams.setConnectionTimeout(params, 1000); /* 请求超时 */ HttpConnectionParams.setSoTimeout(params, 4000); // 设置我们的HttpClient支持HTTP和HTTPS两种模式 SchemeRegistry schReg = new SchemeRegistry(); schReg.register(new Scheme("http", PlainSocketFactory .getSocketFactory(), 80)); schReg.register(new Scheme("https", SSLSocketFactory .getSocketFactory(), 443)); // 使用线程安全的连接管理来创建HttpClient ClientConnectionManager conMgr = new ThreadSafeClientConnManager( params, schReg); httpClient = new DefaultHttpClient(conMgr, params); } return httpClient; } /** * 获得Post请求对象 * @param uri 请求地址,也可以带参数 * @param params 如果为null,则不添加由BasicNameValue封装的参数 * @return */ public static HttpPost getPost(String uri, List<BasicNameValuePair> params) { HttpPost post = new HttpPost(uri); try { if(params != null) { post.setEntity(new UrlEncodedFormEntity(params)); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return post; } /** * 用户使用的方法 * 功能:从服务器获得字符串 * @param post * @return */ public static String getString(HttpPost post) { HttpClient httpClient = getHttpClient(); HttpResponse response; try { response = httpClient.execute(post); if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { post.abort(); Log.v(TAG, "响应失败,请求终止."); return null; } Log.v(TAG, "响应成功."); return EntityUtils.toString(response.getEntity()); } catch (ClientProtocolException e) { e.printStackTrace(); Log.e(TAG, e.getMessage()); return null; } catch (IOException e) { e.printStackTrace(); Log.e(TAG, e.getMessage()); return null; } } /** * 用户使用的方法 * 功能:请求服务器,返回字符串 * @param post post 请求对象 * @param requestLimit 请求失败限制次数 * @return */ public static String getString(HttpPost post, int requestLimit) { if (requestLimit < 1) { return null; } HttpResponse response; int currCount = 0; // 当前请求次数 String result = null; while (currCount < requestLimit) { HttpClient httpClient = getHttpClient(); currCount++; try { response = httpClient.execute(post); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { Log.v(TAG, "响应成功."); return EntityUtils.toString(response.getEntity()); } else { post.abort(); Log.v(TAG, "响应失败,请求终止."); result = "响应失败,请求终止."; } } catch (ClientProtocolException e) { Log.e(TAG, e.getMessage()); if (currCount > requestLimit) { result = "请求失败."; break; } System.out.println("ClientProtocolException"); } catch (IOException e) { Log.e(TAG, e.getMessage()); if (e instanceof ConnectTimeoutException) { result = "连接超时."; } else { result = "IO异常."; } if (currCount > requestLimit) { break; } System.out.println("IOException"); } finally { System.out.println("finally"); } } return result; } /** * 用户使用的方法 * 功能:请求服务器,返回字符串 * @param uri 字符串形式的请求地址 * @param requestLimit 最多允许的请求失败次数 * @return */ public static String getString(String uri, int requestLimit) { if (requestLimit < 1) { return null; } HttpResponse response; int currCount = 0; // 当前请求次数 String result = null; HttpPost post = getPost(uri, null); while (currCount < requestLimit) { HttpClient httpClient = getHttpClient(); currCount++; try { response = httpClient.execute(post); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { Log.v(TAG, "响应成功."); return EntityUtils.toString(response.getEntity()); } else { post.abort(); Log.v(TAG, "响应失败,请求终止."); result = "响应失败,请求终止."; } } catch (ClientProtocolException e) { Log.e(TAG, e.getMessage()); if (currCount > requestLimit) { result = "请求失败."; break; } System.out.println("ClientProtocolException"); } catch (IOException e) { //Log.e(TAG, e.getMessage()); if (e instanceof ConnectTimeoutException) { result = "连接超时."; } else { result = "IO异常."; } if (currCount > requestLimit) { break; } //System.out.println("IOException"); } finally { System.out.println("finally"); } } return result; } /** * 释放建立http请求占用的资源 */ public static void shutdown() { // 释放建立http请求占用的资源 httpClient.getConnectionManager().shutdown(); httpClient = null; } }
使用范例:
package com.laili; import java.util.ArrayList; import java.util.List; import org.apache.http.client.methods.HttpPost; import org.apache.http.message.BasicNameValuePair; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import com.laili.util.HttpUtil; public class HttpUtilActivity extends Activity { private Button btn; private EditText show; private String uri = "http://10.2.105.76:8080/json/TestJsonServlet"; private List<BasicNameValuePair> params; private Handler handler; private String showStr = ""; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); params = new ArrayList<BasicNameValuePair>(); handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 0x01: show.setText(showStr); break; } } }; show = (EditText) findViewById(R.id.editText1); btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new Thread(){ public void run() { params.add(new BasicNameValuePair("username", "zhelong")); params.add(new BasicNameValuePair("password", "123456")); HttpPost post = HttpUtil.getPost(uri, params); showStr += HttpUtil.getString(post,3); //System.out.println(response); handler.sendEmptyMessage(0x01); }; }.start(); } }); } }
发表评论
-
解决ScrollView中嵌套ListView或RecycleView卡顿问题
2016-01-20 02:23 1947解决问题:<listview上下滑动卡顿> 只要 ... -
解决Eclipse启动速度过慢的问题
2016-01-13 20:20 2505Delete the following directory: ... -
Android,iOS打开手机QQ与指定用户聊天界面
2016-01-07 18:19 1784在浏览器中可以通过JS代码打开QQ并弹出聊天界面,一般作为客服 ... -
Android Studio debug使用release的签名
2015-12-09 17:50 1276当我们在做微信微博sdk分享的时候调试非常麻烦,因为要使用对应 ... -
解决Android SDK Manager更新、下载速度慢
2015-10-12 16:39 644转自: [urlhttp://blog.163.com/bob ... -
android httpClient 支持HTTPS的2种处理方式
2015-09-11 17:37 1344http://my.oschina.net/blackylin ... -
带进度条的WebView
2015-08-29 16:53 625public class ProgressWebView ex ... -
Android中javascript和java互相调用
2015-08-29 16:06 616http://www.jb51.net/article/599 ... -
仿微信朋友圈点击图片变暗
2015-08-20 22:35 1032import android.content.Context; ... -
Android图片缓存框架Fresco极其强大的配置
2015-07-20 21:12 1325Android图片缓存框架Fresco极其强大的配置,配置强大 ... -
Android实现ViewPager+RadioGroup滑动效果
2015-07-19 15:05 1219有滚动标识的滑动条,顺畅无比哦 -
Android实现可用性非常高的滚动数字条
2015-07-18 15:48 5109对外提供接口,可以是调用并改变数字滚动条的样式 -
Java实现二维码生成和解析代码
2015-07-05 16:36 1066请下载附件,查看代码 -
利用zxing-core.jar生成和解析二维码
2015-07-05 15:30 1578Zxing是Google提供的关于条码(一维码、二维码)的解析 ... -
Android-webview和js脚本语言交互的时候怎么获取js方法的返回值
2015-07-02 12:10 2098http://zhidao.baidu.com/questio ... -
JS判断手机端是否安装了某个客户端APP应用
2015-05-15 17:02 3360最近在做项目的wap版,有个需求就是,先判断手机上是否有我们的 ... -
Android选图裁剪实现
2015-04-29 18:22 523看附件顶顶顶顶顶 -
Eclipse转AS必看设置
2015-04-26 00:01 1450常用设置: 1.Tab不用4个空格 Code Style-& ... -
android软键盘挤压界面的问题解决方法
2015-04-09 11:59 2850AndroidManifest.xml 中设置 android ... -
MultipleImagePick 从相册中选择图片,可以单选和多选。
2015-04-08 10:28 2111http://jcodecraeer.com/a/openso ...
相关推荐
用于HTTP请求的工具类,支持GET,POST,HTTP,HTTPS 代码简单易懂
`httputil`工具类是Java编程中常见的一种实用工具,主要用于简化HTTP请求的发送与响应的处理。在Web开发中,我们常常需要与服务器进行交互,获取或发送数据,这时`HttpUtils`就显得非常方便。下面将详细介绍`...
http连接请求,可以支持请求get,post方式请求表单,支持上传文件
该工具类提供了多种方法来发送 GET、POST、PUT、DELETE 等请求,并且支持设置超时时间、代理服务器、证书验证等功能。 关键代码分析 在 HttpUtils 工具类中,有一些关键的代码需要特别注意: 1. `init()` 方法:...
3. **所有jar包包含在内**:在提供的压缩文件中,`HttpUtil` 包含了所有必要的jar包,这意味着开发者无需额外下载其他依赖,可以直接在项目中使用这个工具类。这些jar包可能包含了HTTP客户端库(如Apache HttpClient...
HttpUtil工具类主要用于处理HTTP请求和响应,它简化了网络通信过程。开发者可以利用HttpUtil发送GET、POST等请求,设置请求头,处理响应数据等。这个工具类通常会包含如`sendGetRequest`和`sendPostRequest`这样的...
在这个过程中,`HttpUtil.java`可能是一个自定义的工具类,包含了使用`httpclient`进行HTTP操作的实用方法。它可能会包含创建`HttpClient`、构建请求、解析响应等功能,简化了代码的复用和维护。 总之,`httpclient...
在IT行业中,工具类是程序员经常使用的一种设计模式,它封装了特定功能,方便在项目中重复使用。这里提到的"HttpUtil工具包"显然是一款针对HTTP网络请求的实用工具,它提供了对字符串和图片处理的功能。让我们深入...
多年积累,功能比较强大,可设置路由连接数,时间,请求类型包括get,post, 参数包括urlcode,map,json,xml。注释很清楚。
最后,HttpUtil工具类主要用于HTTP请求的发送和响应的接收。在网络编程中,我们经常需要向服务器发送GET、POST等HTTP请求获取数据,或者提交数据。HttpUtil可能包含了发起请求、设置请求头、处理响应等功能,使得...
c 一款参考QQ、微信的即时通讯软件。采用CS结构,客户端基于...客户端准备:进入App.xaml.cs文件配置服务端的IP地址,同时在HttpUtil工具类中接入AI机器人接口、短信验证服务接口等,正确地配置SocketUtil中的连接。
基于Apache HttpClient 4.5.2 封装的工具类 HttpUtil 可用于爬虫和模拟登陆。使用新的语法后比3.*版本的速度感觉有提升。使用后注意资源的释放 pom 部分,应该不全,需要用的根据代码的import去找maven资源即可。 ...
日期与时间的相互转换,日期与时间戳的相互转换的一个工具类。
java 处理微信客服推送校验token所用到的工具类 使用方法:hashcode = SHA1.gen(token, timestamp, nonce) String res = ""; if (hashcode.equals(signature)) { res = echostr; } return res;
请求http工具 支持ssl,请求参数支持json数据和map数据,能自动转换编码),不必担心返回数据乱码
Http工具类HttpUtil.java:这个文件是工作用到的工具类,上传上来以后自己用到或者有同学也需要。 maven项目添加如下的jar包依赖,文件放到项目中修改一下package就可以直接使用了。 <groupId>org.apache....
网络请求工具类
org.springframework.web.client.AsyncRestTemplate org.springframework.web.client.RestTemplate HTTP请求工具类,基于以上两个Rest请求工具模板完成封装HTTP请求,包括同步和异步请求的实现。