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

使用MockWebServer时遭遇UnknownHostException问题求助

解决MockWebServer遇到UnknownHostException的问题

嘿,这个坑我之前也踩过!你碰到的UnknownHostException核心原因特别明确:你没有使用MockWebServer生成的模拟服务器地址,反而用了一个压根不存在的外部域名some-mock-url.com,系统解析不了这个虚构的主机,自然就抛出错误了。

MockWebServer的工作逻辑是这样的:它会在你的本地设备(或模拟器)上启动一个临时HTTP服务器实例,默认绑定localhost并随机分配端口。你必须用它提供的专属URL发起请求,而不是自己随便写一个域名。

具体修正步骤:

  • 启动MockWebServer后,调用server.url("/")获取它的基础访问地址,这个地址是真实可用的本地模拟服务器入口
  • 用这个基础地址替换掉你原来自定义的http://some-mock-url.com来构建请求
  • 测试结束后记得调用server.shutdown()关闭服务器,避免资源占用

修正后的完整测试代码:

@Test 
public void myTest() throws IOException, InterruptedException { 
    MockWebServer server = new MockWebServer(); 
    // 预存模拟响应内容
    server.enqueue(new MockResponse().setBody("Something not valid JSON response")); 
    server.start(); 

    // 获取MockWebServer的真实基础URL,这才是你该用的请求地址
    String baseUrl = server.url("/").toString(); 

    final CountDownLatch signal = new CountDownLatch(1); 

    AndroidNetworking.get(baseUrl) 
        .addQueryParameter("some_key", "some_value12345") 
        .addHeaders("token", "token_1231234") 
        .build() 
        .getAsJSONObject(new JSONObjectRequestListener() { 
            @Override 
            public void onResponse(JSONObject response) { 
                signal.countDown(); 
                Log.i("Response", "jsonObject: " + response); 
            } 

            @Override 
            public void onError(ANError anError) { 
                signal.countDown(); 
                Log.i("Response", "error: " + anError.getMessage()); 
            } 
        }); 

    signal.await(); 
    // 测试完成后关闭服务器释放资源
    server.shutdown(); 
}

另外补充一句:你在Manifest里配置的网络权限、添加的MockWebServer依赖都是完全正确的,问题就出在URL的使用方式上而已~

内容的提问来源于stack exchange,提问作者Adam Varhegyi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:34:51