diff --git a/app/src/main/java/com/mogo/cloud/network/NetworkActivity.java b/app/src/main/java/com/mogo/cloud/network/NetworkActivity.java index 60ad747..97e841d 100644 --- a/app/src/main/java/com/mogo/cloud/network/NetworkActivity.java +++ b/app/src/main/java/com/mogo/cloud/network/NetworkActivity.java @@ -58,26 +58,21 @@ public class NetworkActivity extends AppCompatActivity { @Override public void onClick(View view) { tvResult.setText("结果显示"); -// queryRoadData("ZD802C1938L10797"); + queryRoadData("ZD802C1938L10797"); // queryHelpSignal("ZD802C1938L10797"); //上报路况到服务端 - uploadRoadInfo(); + // uploadRoadInfo(); //查询路况 // queryRoad(); } }); - AtomicInteger atomicInteger = new AtomicInteger(); - atomicInteger.addAndGet(10); - atomicInteger.getAndIncrement(); - atomicInteger.incrementAndGet(); - } public void queryRoad() { MogoRoadSearchManager.getInstance(NetworkActivity.this).init(); - MogoRoadSearchManager.getInstance(NetworkActivity.this).queryRoadInfo(null , new IRoadInfoSearchCallback() { + MogoRoadSearchManager.getInstance(NetworkActivity.this).queryRoadInfo(null, new IRoadInfoSearchCallback() { @Override public void onSuccess(BaseData result) { if (result != null && result.getResult() != null) { @@ -139,7 +134,7 @@ public class NetworkActivity extends AppCompatActivity { // }); UploadManager.getInstance(NetworkActivity.this).init(); - UploadManager.getInstance(NetworkActivity.this).loadUpload(null,new ITanluUploadCallback() { + UploadManager.getInstance(NetworkActivity.this).loadUpload(null, new ITanluUploadCallback() { @Override public void onSuccess(BaseData result) { Log.d(TAG, "NetworkActivity uploadRoadInfo result.id = " + result.getResult().id); diff --git a/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/HttpDns.kt b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/HttpDns.kt new file mode 100644 index 0000000..e0635bf --- /dev/null +++ b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/HttpDns.kt @@ -0,0 +1,20 @@ +package com.mogo.cloud.commons.network + +import android.text.TextUtils +import com.mogo.cloud.commons.utils.getInetAddressByHost +import okhttp3.Dns +import java.net.InetAddress + +/** + * created by wujifei on 2021/1/26 12:51 + * describe: + */ +class HttpDns : Dns { + override fun lookup(hostname: String): List { + val addresses: List = getInetAddressByHost(hostname) + if (!addresses.isEmpty()) { + return addresses + } + return Dns.SYSTEM.lookup(hostname) + } +} \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/OkHttpFactory.kt b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/OkHttpFactory.kt index d6fbe32..9d32b11 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/OkHttpFactory.kt +++ b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/OkHttpFactory.kt @@ -3,6 +3,8 @@ package com.mogo.cloud.commons.network import com.mogo.cloud.commons.network.NetConstants.Companion.CONNECT_TIMEOUT import com.mogo.cloud.commons.network.NetConstants.Companion.READ_TIMEOUT import com.mogo.cloud.commons.network.NetConstants.Companion.WRITE_TIMEOUT +import com.mogo.cloud.commons.network.SSLSocketFactoryUtils.createSSLSocketFactory +import com.mogo.cloud.commons.network.SSLSocketFactoryUtils.createTrustAllManager import com.mogo.cloud.commons.network.interceptor.HeaderNetworkInterceptor import com.mogo.cloud.commons.utils.lookup import okhttp3.Dns @@ -24,18 +26,13 @@ class OkHttpFactory private constructor() { OkHttpClient.Builder() .addInterceptor(HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)) .addNetworkInterceptor(HeaderNetworkInterceptor()) + .sslSocketFactory(createSSLSocketFactory(), createTrustAllManager()) + .hostnameVerifier(SSLSocketFactoryUtils.TrustAllHostnameVerifier()) .connectTimeout(CONNECT_TIMEOUT, TimeUnit.MILLISECONDS) .readTimeout(READ_TIMEOUT, TimeUnit.MILLISECONDS) .writeTimeout(WRITE_TIMEOUT, TimeUnit.MILLISECONDS) - .dns { hostname: String? -> - val addresses: List? = lookup(hostname) - addresses?.let { - if (!it.isEmpty()) { - return@dns addresses - } - } - Dns.SYSTEM.lookup(hostname) - }.build() + .dns(HttpDns()) + .build() } diff --git a/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/SSLSocketFactoryUtils.kt b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/SSLSocketFactoryUtils.kt new file mode 100644 index 0000000..38a8055 --- /dev/null +++ b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/SSLSocketFactoryUtils.kt @@ -0,0 +1,57 @@ +package com.mogo.cloud.commons.network + +import java.security.SecureRandom +import java.security.cert.CertificateException +import java.security.cert.X509Certificate +import javax.net.ssl.* + +/** + * created by wujifei on 2021/1/26 12:51 + * describe: + */ +object SSLSocketFactoryUtils { + /* + * 默认信任所有的证书 + * 最好加上证书认证,主流App都有自己的证书 + * */ + private const val str = "TLS" + fun createSSLSocketFactory(): SSLSocketFactory? { + var sslSocketFactory: SSLSocketFactory? = null + try { + val sslContext = SSLContext.getInstance(str) + sslContext.init(null, arrayOf(createTrustAllManager()), SecureRandom()) + sslSocketFactory = sslContext.socketFactory + } catch (e: Exception) { + } + return sslSocketFactory + } + + fun createTrustAllManager(): X509TrustManager? { + var tm: X509TrustManager? = null + try { + tm = object : X509TrustManager { + @Throws(CertificateException::class) + override fun checkClientTrusted(chain: Array, authType: String) { + //do nothing,接受任意客户端证书 + } + + @Throws(CertificateException::class) + override fun checkServerTrusted(chain: Array, authType: String) { + //do nothing,接受任意服务端证书 + } + + override fun getAcceptedIssuers(): Array { + return arrayOfNulls(0) + } + } + } catch (e: Exception) { + } + return tm + } + + class TrustAllHostnameVerifier : HostnameVerifier { + override fun verify(hostname: String, session: SSLSession): Boolean { + return true + } + } +} \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/utils/NetworkUtils.kt b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/utils/NetworkUtils.kt index feb1796..d98a46c 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/utils/NetworkUtils.kt +++ b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/utils/NetworkUtils.kt @@ -27,4 +27,22 @@ fun lookup(hostname: String?): List? { } else { Arrays.asList(*InetAddress.getAllByName(cacheIp)) } +} + + +/** + * 根据host获取InetAddress + */ +@Throws(UnknownHostException::class) +fun getInetAddressByHost(hostname: String): List { + val cacheIp: String? = hostname?.let { MogoHttpDnsClient.getHttpDnsAddressUseCacheIfNecessary(HTTP_DNS_ADDRESS_TYPE_HTTP, it) } + if (cacheIp == null || TextUtils.isEmpty(cacheIp)) { + return emptyList() + } + val info = cacheIp.split(":").toTypedArray() + return if (info.size > 1) { + Arrays.asList(*InetAddress.getAllByName(info[0])) + } else { + Arrays.asList(*InetAddress.getAllByName(cacheIp)) + } } \ No newline at end of file