java.net.SocketException:在Android上请求http端点时连接重置

c9qzyr3d  于 2022-11-27  发布在  Android
关注(0)|答案(1)|浏览(220)

出于学习目的,我需要请求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>
sr4lhrrt

sr4lhrrt1#

如果只是为了学习你可以打电话
(一)建立一个新的安全策略;
当你的应用程序/活动被创建的时候。2这会使运行时在调试HTTP请求的时候不那么无聊。

相关问题