특정 요청을 라우팅해야합니다. wifi를 "Connected, no internet"및 "Mobile Data"가 켜져 있습니다. 예를 들어 아래OkHttp 경로 트래픽 wifi 및 SocketFactory를 던졌습니다.
는 HttpURLConnection
와 함께 잘 작동하지만 응용 프로그램에 대한 기본 네트워크 라이브러리입니다 OkHttp3 (3.8.1)와 함께 작동 : 3.4.2
코드 OkHttp 버전 예상대로 작동
그러나 OkHttp 버전 이후 깨진 : 3.5.0
OkHttpClient.Builder builder = new OkHttpClient.Builder();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
final Network[] networks = connectivityManager.getAllNetworks();
for (final Network network : networks) {
final NetworkInfo netInfo = connectivityManager.getNetworkInfo(network);
if (netInfo.getType() == ConnectivityManager.TYPE_WIFI && netInfo.getState() == NetworkInfo.State.CONNECTED) {
// just for example HttpURLConnection works as expected and route traffic throw wifi
connection = (HttpURLConnection) network.openConnection(url);
// not works since >=3.5.0, route traffic in same way
builder.socketFactory(network.getSocketFactory());
}
}
}
OkHttpClient client = builder.build();
final Response response = client.newCall(initialRequest).execute();
client.newCall없는 작품 이해, 아니면 단순한 누락의로 예상대로 뭔가.