Google Volley框架之https请求
来源:互联网 发布:快消品数据分析 编辑:程序博客网 时间:2024/06/07 10:36
先插一句,Google出的volley框架本身是支持https请求的,但是只是针对有第三方机构认证过的。
如果自己随便在网上搞的一个证书,那volley是不支持请求的。
本文讲下如何让volley支持自己搞的https证书。
修改volley源码:com.android.myvolley.toolbox.HurlStack
/** * Create an {@link HttpURLConnection} for the specified {@code url}. */ protected HttpURLConnection createConnection(URL url) throws IOException { if (url.toString().contains("https")) { MyHttpsManager.allowAllSSL(); } return (HttpURLConnection) url.openConnection(); }在HurlStack类中的createConnection方法中,做个过滤处理:
if (url.toString().contains("https")) { MyHttpsManager.allowAllSSL(); }直接贴代码啦。
import java.security.KeyManagementException;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.security.cert.CertificateException;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 MyHttpsManager implements X509TrustManager { private static TrustManager[] trustManagers; @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } 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 MyHttpsManager() }; } 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()); }}
然后请求的时候在头里面加个什么鬼id,sign之类的,就可以和服务端通信了。
例如volley重写getHeaders方法:
public void sendRequest(int method, String url, JSONObject jsonRequest, final String sessionToken, final OnResponseListener listener,final OnErrorListener errorListener) { initUserAgent(); JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(method, url, jsonRequest, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { listener.onResponse(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { errorListener.onErrorResponse(error); } }){ @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<String,String>(); headers.put("Content-Type", "application/json"); headers.put("x-app-id", APPID); headers.put("x-app-sign",SIGN); headers.put("x-session-token",sessionToken); headers.put("User-Agent",userAgent); return headers; } }; Volley.newRequestQueue(context).add(jsonObjectRequest); }
0 0
- Google Volley框架之https请求
- Volley框架支持HTTPS请求。
- Volley框架支持HTTPS请求
- Volley框架支持HTTPS请求。
- Android Volley框架支持https请求
- volley框架之json请求
- Volley的Https请求
- Volley的Https请求
- Volley支持https请求
- Volley框架使用之请求大量图片
- Android数据请求之Volley框架
- Google Volley 框架 POST请求无效 服务器接收不到参数
- Google网络请求框架Volley源码浅析(一)
- Google网络请求框架Volley源码浅析(二)
- Google网络请求框架Volley源码浅析(三)
- Google网络请求框架Volley源码浅析(四)
- Google亲推的网络请求框架Volley
- volley official https://github.com/google/volley
- Java线程_wait,sleep,notify,notifyall,join
- 【剑指offer】 面试题7: 用两个栈实现队列
- 动态计算UITableviewCell高度
- JS 传值到jsp 中文字符乱码
- 将OSG嵌入QT窗口系统中,实现拖拽界面
- Google Volley框架之https请求
- 页面有时无法输入中文的解决方案
- 公钥私钥加密
- @property 和@synthesize
- Setup Ruby On Rails on Mac OS X 10.10 Yosemite
- Linux-文件权限
- Ubuntu 14.04一步一步安装Openstack Kilo版本-7(keystone)
- afnetworking
- 数据挖掘分类算法之决策树(zz)