Okhttp 模拟服务器无法在 API 28 及更高版本的模拟器上运行
Okhttp mock server is not working on API 28 and above simulator
我的模拟服务器调度程序 从未达到 模拟器上的覆盖方法运行 API 28 及更高版本,但它在其他版本上工作正常。知道如何触发它吗?还是只是 API 版本问题?
我指的是 localhost:8080。
而okhttp版本是4.2.1.
fun search() {
sleepSafely(3000)
mockServer = MockWebServer()
mockServer.dispatcher = ErrorDispatcher()
mockServer.start(8080)
sleepSafely(3000)
// do the API request
}
public class ErrorDispatcher extends Dispatcher {
@NotNull
@Override
public MockResponse dispatch(RecordedRequest request) {
// never be triggered
String path = request.getPath();
if (path.equalsIgnoreCase("/api/v2/search/person")) {
return new MockResponse()
.setResponseCode(404)
.setBody("{"MOCK_KEY": "MOCK_VALUE"}");
} else if (path.equalsIgnoreCase("/api/v2/search/book")) {
return new MockResponse()
.setResponseCode(404);
} else {
return new MockResponse().setResponseCode(404);
}
}
}
你说得对,OKHttp3 MockServer 不适用于 API 28 及更高版本。我正在使用 'com.squareup.okhttp3:mockwebserver:4.0.1',我需要将我的项目降级到 27 才能让它工作。
我认为这是因为 Android API 28+ 不再支持明文 HTTP 流量并且 MockWebServer 在 HTTP 上运行。
一位用户对 this issue 发表评论,建议将 android:usesCleartextTraffic="true"
添加到您的测试清单。
我的模拟服务器调度程序 从未达到 模拟器上的覆盖方法运行 API 28 及更高版本,但它在其他版本上工作正常。知道如何触发它吗?还是只是 API 版本问题?
我指的是 localhost:8080。 而okhttp版本是4.2.1.
fun search() {
sleepSafely(3000)
mockServer = MockWebServer()
mockServer.dispatcher = ErrorDispatcher()
mockServer.start(8080)
sleepSafely(3000)
// do the API request
}
public class ErrorDispatcher extends Dispatcher {
@NotNull
@Override
public MockResponse dispatch(RecordedRequest request) {
// never be triggered
String path = request.getPath();
if (path.equalsIgnoreCase("/api/v2/search/person")) {
return new MockResponse()
.setResponseCode(404)
.setBody("{"MOCK_KEY": "MOCK_VALUE"}");
} else if (path.equalsIgnoreCase("/api/v2/search/book")) {
return new MockResponse()
.setResponseCode(404);
} else {
return new MockResponse().setResponseCode(404);
}
}
}
你说得对,OKHttp3 MockServer 不适用于 API 28 及更高版本。我正在使用 'com.squareup.okhttp3:mockwebserver:4.0.1',我需要将我的项目降级到 27 才能让它工作。
我认为这是因为 Android API 28+ 不再支持明文 HTTP 流量并且 MockWebServer 在 HTTP 上运行。
一位用户对 this issue 发表评论,建议将 android:usesCleartextTraffic="true"
添加到您的测试清单。