提交 eaaf0a46 编写于 作者: J jackjintai

android:针对urlconnection 中包含中文的字符进行encode

上级 143e04b6
package com.didichuxing.doraemonkit.aop.urlconnection;
import android.net.Uri;
import android.util.Log;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DoraemonInterceptor;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DoraemonWeakNetworkInterceptor;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.LargePictureInterceptor;
......@@ -8,6 +11,7 @@ import com.didichuxing.doraemonkit.okgo.DokitOkGo;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.concurrent.TimeUnit;
import okhttp3.HttpUrl;
......@@ -43,31 +47,41 @@ public class HttpUrlConnectionProxyUtil {
private static URLConnection createOkHttpURLConnection(URLConnection urlConnection) throws Exception {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
//不需要再重复添加拦截器 因为已经通过字节码主如果拦截器了
//addInterceptor(builder);
OkHttpClient mClient = builder
.retryOnConnectionFailure(true)
.readTimeout(DokitOkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS)
.writeTimeout(DokitOkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS)
.connectTimeout(DokitOkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS)
.build();
String strUrl = urlConnection.getURL().toString();
// OkHttpClient.Builder builder = new OkHttpClient.Builder();
// //不需要再重复添加拦截器 因为已经通过字节码主如果拦截器了
// //addInterceptor(builder);
// OkHttpClient mClient = builder
// .retryOnConnectionFailure(true)
// .readTimeout(DokitOkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS)
// .writeTimeout(DokitOkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS)
// .connectTimeout(DokitOkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS)
// .build();
//对url进行encode
String strUrl = encodeUrl(urlConnection.getURL().toString());
//Log.i("decode", decodeUrl(strUrl));
URL url = new URL(strUrl);
String protocol = url.getProtocol().toLowerCase();
if (protocol.equalsIgnoreCase("http")) {
return new ObsoleteUrlFactory.OkHttpURLConnection(url, mClient);
return new ObsoleteUrlFactory.OkHttpURLConnection(url, OkhttpClientUtil.INSTANCE.getOkhttpClient());
}
if (protocol.equalsIgnoreCase("https")) {
return new ObsoleteUrlFactory.OkHttpsURLConnection(url, mClient);
return new ObsoleteUrlFactory.OkHttpsURLConnection(url, OkhttpClientUtil.INSTANCE.getOkhttpClient());
}
return urlConnection;
}
public static String encodeUrl(String url) {
return Uri.encode(url, "-![.:/,%?&=]");
}
public static String decodeUrl(String url) {
return Uri.decode(url);
}
private static void addInterceptor(OkHttpClient.Builder builder) {
// 判断当前是否已经添加了拦截器,如果已添加则返回
for (Interceptor interceptor : builder.interceptors()) {
......
package com.didichuxing.doraemonkit.aop.urlconnection
import com.didichuxing.doraemonkit.okgo.DokitOkGo
import okhttp3.OkHttpClient
import java.util.concurrent.TimeUnit
/**
* ================================================
* 作 者:jint(金台)
* 版 本:1.0
* 创建日期:2020/6/17-10:25
* 描 述:将urlconnection 代理成okhttpClient
* 修订历史:
* ================================================
*/
object OkhttpClientUtil {
val okhttpClient: OkHttpClient by lazy {
OkHttpClient.Builder()
.retryOnConnectionFailure(true)
.readTimeout(DokitOkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS)
.writeTimeout(DokitOkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS)
.connectTimeout(DokitOkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS)
.build()
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册