我尝试将MockWebServer用于我的API的各种回复。 我做了一个简单的例子来试试我想做的是一种工作方法。
mockWebServer 是不是要“模拟”我的http连接的端点?像真正的服务器?每当我尝试拨打电话时,我都会收到UnknownHostException。
我使用它错了吗? 是不是应该只更换服务器的响应? (嘲笑)
E D I T:
我在清单中有互联网许可。
我用:
androidTestImplementation 'com.squareup.okhttp3:mockwebserver:3.9.1'
代码:
@Test
public void myTest() throws IOException, InterruptedException {
String url = "http://some-mock-url.com";
MockWebServer server = new MockWebServer();
server.enqueue(new MockResponse().setBody("Something not valid JSON response"));
server.start();
server.url(url);
final CountDownLatch signal = new CountDownLatch(1);
AndroidNetworking.get(url)
.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();
}
logcat的:
com.androidnetworking.error.ANError:java.net.UnknownHostException: 无法解析主机“some-mock-url.com”:没有与之关联的地址 主机名
答案 0 :(得分:0)
订单反转后我找到了一个例子。
因此,您必须将Mock服务器的网址设置为实际网址,而不是设置Mock服务器的URL,如下所示:
myAPIsURL= mockWebServer.url("/").toString();
而不是
mockWebServer.url(myAPIsURL);
答案 1 :(得分:0)
如果有人遇到相同的问题,MockWebServer
来自OKHttp
的相同依赖项,因此他们都需要具有相同的依赖项版本。
答案 2 :(得分:-1)
对我来说这是一个代理问题。 我遵循了这个解决方案。 我现在没有收到未知的主机异常。 https://stackoverflow.com/a/41714851/5856146