vollery框架使用及支持https
来源:互联网 发布:ipv6 无网络访问权限 编辑:程序博客网 时间:2024/05/17 17:46
前言:之前开发使用到vollery框架,对于这个框架,个人评价是开源但不完善,除了常用的get,post请求外,如果需要用到delete请求,需要手动去修改vollery框架内部的源码,另外不支持https,有这块的需求,也需要手动去修改内部源码,最无语的一块是对文件上传支持不好。
建议:如果是单纯的http网络数据请求,可以使用该框架。如果涉及到图片上传、支持多种格式的请求格式,最好使用比较老成的框架,如:android-async-http 或者其他功能支持比较全面框架。
如下是记录内容:
导入Vollery框架,在23版本中去掉了AndroidHttpClient的API,解决方案:
在当前的lib类库中的build文件中,添加如下两处地方即可:
android {
useLibrary ‘org.apache.http.legacy’
dependencies {
compile ‘org.apache.httpcomponents:httpcore:4.4.2’
找不到符号:import android.net.http.AndroidHttpClient;
但在android6.0之后,HttpClient被完全抛弃。如果要继续使用需要Apache HttpClient,需要在eclipse下libs里添加org.apache.http.legacy.jar,android studio里在相应的module下的build.gradle中加入:
android {
useLibrary ‘org.apache.http.legacy’
}
注意:vollery框架默认不支持Delete方法提交参数请求,需要在源码中,把添加请求的方法体
关于支持Https的方案:
1)方案一:既然volley框架里面有https请求方式,只不过没有调用,那么一种修改的方法是重写Volley.java newRequestQueueInDisk方法 调用第三个构造。又因为这三个构造最后调用的都是参数最多的那个所以也可以在第三个构造中直接默认生成SSLSocketFactory示例。但是我没有用这种方法。
2)方案二:在toolbox中添加HTTPSTrustManager类(代码网上找的- -、),并对HurlStack的createConnetcion方法进行了小小的修改。(本人采用的方法)
package com.android.volley.toolbox; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class HTTPSTrustManager implements X509TrustManager { private static TrustManager[] trustManagers; private static final X509Certificate[] _AcceptedIssuers = new X509Certificate[] {}; @Override public void checkClientTrusted( java.security.cert.X509Certificate[] x509Certificates, String s) throws java.security.cert.CertificateException { // To change body of implemented methods use File | Settings | File // Templates. } @Override public void checkServerTrusted( java.security.cert.X509Certificate[] x509Certificates, String s) throws java.security.cert.CertificateException { // To change body of implemented methods use File | Settings | File // Templates. } public boolean isClientTrusted(X509Certificate[] chain) { return true; } public boolean isServerTrusted(X509Certificate[] chain) { return true; } @Override public X509Certificate[] getAcceptedIssuers() { return _AcceptedIssuers; } public static void allowAllSSL() { HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String arg0, SSLSession arg1) { // TODO Auto-generated method stub return true; } }); SSLContext context = null; if (trustManagers == null) { trustManagers = new TrustManager[] { new HTTPSTrustManager() }; } try { context = SSLContext.getInstance("TLS"); context.init(null, trustManagers, new SecureRandom()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (KeyManagementException e) { e.printStackTrace(); } HttpsURLConnection.setDefaultSSLSocketFactory(context .getSocketFactory()); } }
createConnction方法的修改:
[java] view plaincopy
protected HttpURLConnection createConnection(URL url) throws IOException {
//如果请求是https请求那么就信任所有SSL
[java] view plaincopy
if (url.toString().contains(“https”)) {
HTTPSTrustManager.allowAllSSL();
}
return (HttpURLConnection) url.openConnection();
}
其实就是添加了一个 HTTPSTrustManager类,并在createConnection中调用一下HTTPSTrustManager.allowAllSSL()。
3)方案三:不修改volley框架代码,在创建Request请求之前设置,如下同样可以达到效果。
<span style="font-family:SimSun;">HttpTrustManager.allowAllSSL();mStringRequest = new StringRequest(Request.Method.POST,url,getDefaultSuccessListener(), mErrorListener){ @Override protected Map<String, String> getParams() throws AuthFailureError { return params; } };mRequestQueue.add(mStringRequest);</span>
以上就是全部内容,大家可以自个去试试,有什么问题可以留言。或者在微信公众号“技术帮团队”上找我们。
- vollery框架使用及支持https
- Android vollery框架的最基本使用
- vollery的使用小计
- Vollery的图片载入使用
- libcurl windows下编译和post使用及https支持
- Volley框架支持HTTPS请求。
- Volley框架支持HTTPS请求
- Volley框架支持HTTPS请求。
- 使用libcurl 支持https
- Vollery 框架之StringRequest二次封装
- Vollery网络框架的源码分析
- Android Volley框架支持https请求
- nginx使用ssl模块配置HTTPS支持
- nginx使用ssl模块配置HTTPS支持
- nginx使用ssl模块配置HTTPS支持
- nginx使用ssl模块配置HTTPS支持
- nginx使用ssl模块配置HTTPS支持
- nginx使用ssl模块配置HTTPS支持
- iOS及Mac开源项目和学习资料(一)
- Java的反射机制
- 读取本地txt文件数据和excel文件数据
- 第2周项目2-程序的多文件组织
- 微服务架构设计 第一步: 从特性到业务场景
- vollery框架使用及支持https
- Bmob 初始化 程序停止运行解决方法
- linux设备驱动模型 之driver(驱动)原理与实例分析
- 专访吕毅:链家网技术架构的演进之路
- zookeeper学习资料
- 算法-树(1)—BST(二叉搜索树)
- 14 fragment传值
- 真分数转埃及分数的和 (贪心)
- Eclipse运行不了的常见问题及解决方案