WebDav再次了解

   因为工作的需要要 最近了解webdav。昨天为了实现功能简单的找了一个第三方别人写好的库。今天呢为了深入了解到webdav,我看了好多的帖子,现在就分享给大家。

      webdav 在Android中的应用:

       首先呢,大家可以打开 设置 里面有一个账户,当你添加webdav后就会显示在里面。具体的里面都是基于什么添加进去的我暂时还不了解,但是当你的webdav账户进行同步通讯录或者 同步日历的时候肯定会显示在里面。

      基于webdav 的同步功能:

 cardDAV 和calDAV 通讯录同步和日历的同步。

    

https://docs.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2003/aa142917(v=exchg.65) 

      这个地址相对来说有点参考的价值,他会告诉你应该怎么传值,分享给大家。 

 

      然后呢中间遇到一个证书的问题,当http请求的时候能取到东西,但是https 的时候就没有了。经过查资料知道要忽略证书所以分享给大家:


/**
 * 默认信任所有的证书
 * TODO 最好加上证书认证,主流App都有自己的证书
 *
 * @return
 */
@SuppressLint("TrulyRandom")
private static SSLSocketFactory createSSLSocketFactory() {

    SSLSocketFactory sSLSocketFactory = null;

    try {
        SSLContext sc = SSLContext.getInstance("TLS");
        sc.init(null, new TrustManager[]{new TrustAllManager()},
                new SecureRandom());
        sSLSocketFactory = sc.getSocketFactory();
    } catch (Exception e) {
    }

    return sSLSocketFactory;
}

private static class TrustAllManager implements X509TrustManager {
    @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];
    }
}

private static class TrustAllHostnameVerifier implements HostnameVerifier {
    @Override
    public boolean verify(String hostname, SSLSession session) {
        return true;
    }
}
//加上证书忽略 
OkHttpClient.Builder mBuilder = new OkHttpClient.Builder();
mBuilder.sslSocketFactory(createSSLSocketFactory(),new TrustAllManager());
mBuilder.hostnameVerifier(new TrustAllHostnameVerifier());

 

 补充一下:有的okhttp 的版本 是不用自己写上面的方法自己实现了只要调用sslSocketFactory方法和hostnameVerifier的方法即可。

 

        最后祝大家工作顺利,生活愉快!!!

你可能感兴趣的:(android)