优化代码
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user