优化代码

This commit is contained in:
jeff
2021-01-26 23:28:40 +08:00
parent 23482a996e
commit facad1158f
5 changed files with 105 additions and 18 deletions

View File

@@ -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<RoadInfos> 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<UploadResult> result) {
Log.d(TAG, "NetworkActivity uploadRoadInfo result.id = " + result.getResult().id);

View File

@@ -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<InetAddress> {
val addresses: List<InetAddress> = getInetAddressByHost(hostname)
if (!addresses.isEmpty()) {
return addresses
}
return Dns.SYSTEM.lookup(hostname)
}
}

View File

@@ -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<InetAddress?>? = lookup(hostname)
addresses?.let {
if (!it.isEmpty()) {
return@dns addresses
}
}
Dns.SYSTEM.lookup(hostname)
}.build()
.dns(HttpDns())
.build()
}

View File

@@ -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<TrustManager?>(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<X509Certificate>, authType: String) {
//do nothing接受任意客户端证书
}
@Throws(CertificateException::class)
override fun checkServerTrusted(chain: Array<X509Certificate>, authType: String) {
//do nothing接受任意服务端证书
}
override fun getAcceptedIssuers(): Array<X509Certificate?> {
return arrayOfNulls(0)
}
}
} catch (e: Exception) {
}
return tm
}
class TrustAllHostnameVerifier : HostnameVerifier {
override fun verify(hostname: String, session: SSLSession): Boolean {
return true
}
}
}

View File

@@ -27,4 +27,22 @@ fun lookup(hostname: String?): List<InetAddress?>? {
} else {
Arrays.asList(*InetAddress.getAllByName(cacheIp))
}
}
/**
* 根据host获取InetAddress
*/
@Throws(UnknownHostException::class)
fun getInetAddressByHost(hostname: String): List<InetAddress> {
val cacheIp: String? = hostname?.let { MogoHttpDnsClient.getHttpDnsAddressUseCacheIfNecessary(HTTP_DNS_ADDRESS_TYPE_HTTP, it) }
if (cacheIp == null || TextUtils.isEmpty(cacheIp)) {
return emptyList<InetAddress>()
}
val info = cacheIp.split(":").toTypedArray()
return if (info.size > 1) {
Arrays.asList(*InetAddress.getAllByName(info[0]))
} else {
Arrays.asList(*InetAddress.getAllByName(cacheIp))
}
}