You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android请求HTTP端点遇Connection reset异常,如何配置允许HTTP请求?

Android HTTP请求连接重置问题解决方法

问题现象

客户端抛出java.net.SocketException: Connection reset异常,服务器端对应出现java.io.IOException: Connection reset by peer异常,但:

  • 使用HTTPS请求同一服务器正常
  • Postman请求该HTTP端点正常
  • 已配置INTERNET权限、networkSecurityConfig允许指定IP的明文流量

解决步骤

1. 修复Retrofit URL配置冲突

你的Retrofit同时设置了baseUrl,又在@GET注解中使用完整HTTP URL,这会导致URL解析异常,引发连接重置。

修正接口定义:将@GET中的完整URL改为相对路径:

@GET("api/v1/findBusStop/{lat}/{lng}")
suspend fun findBusStopByLocation(
    @Path("lat") latitude: Double,
    @Path("lng") longitude: Double,
    @Query("radius") radius: Int
): List<BusStop>

修正baseUrl常量:确保末尾带有斜杠:

const val BUSSO_SERVER_BASE_URL = "http://192.168.1.2:8080/"

2. 确认Network Security Config有效性

当前的network_security_config.xml配置逻辑正确,但如果是测试场景,可临时改为全局允许明文流量(仅限学习测试):

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

测试通过后,建议恢复回原有的指定IP配置,保证安全性。

3. 排除OkHttpClient额外配置干扰

暂时移除缓存等额外配置,使用最简版OkHttpClient测试:

fun provideRetrofit(context: Context): MyApi {
    val okHttpClient = OkHttpClient.Builder()
        .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)
}

若问题消失,再逐步添加缓存等配置排查冲突。

4. 验证服务器与网络环境

  • 确认服务器8080端口正常监听HTTP请求,无防火墙/端口占用问题
  • 检查Android设备与服务器在同一局域网,能正常ping通192.168.1.2

5. 检查应用网络权限

进入Android设备的应用权限设置,确认已授予应用网络访问权限(WiFi/移动数据),部分定制ROM会默认限制应用网络访问。

内容的提问来源于stack exchange,提问作者Oleh Liskovych

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:45:46