出于学习目的,我需要请求http端点。
我已经设置了允许HTTP请求的设置,但是我一直在客户端和服务器端收到java.net.SocketException: Connection reset
异常。
当我用https协议请求同一个服务器应用程序时-一切正常。当使用postman请求时,http端点也工作正常
如何让Android允许http请求?
<manifest>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application android:networkSecurityConfig="@xml/network_security_config">
...
</application>
</manifest>
网络安全配置.xml:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">192.168.1.2</domain>
</domain-config>
</network-security-config>
改装设置:
fun provideRetrofit(context: Context): MyApi {
val cache = Cache(context.cacheDir, CACHE_SIZE)
val okHttpClient = OkHttpClient.Builder()
.cache(cache)
.build()
val retrofit: Retrofit = Retrofit.Builder()
.baseUrl(BUSSO_SERVER_BASE_URL)
.addConverterFactory(
GsonConverterFactory.create(
GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create()
)
)
.client(okHttpClient)
.build()
return retrofit.create(MyApi::class.java)
}
请求:
@GET("http://192.168.1.2:8080/api/v1/findBusStop/{lat}/{lng}")
suspend fun findBusStopByLocation(
@Path("lat") latitude: Double,
@Path("lng") longitude: Double,
@Query("radius") radius: Int
): List<BusStop>
1条答案
按热度按时间sr4lhrrt1#
如果只是为了学习你可以打电话
(一)建立一个新的安全策略;
当你的应用程序/活动被创建的时候。2这会使运行时在调试HTTP请求的时候不那么无聊。