Próbuję użyć OKHTTP (wersja 2.4.0) podczas modernizacji (1.9.0) na silniku aplikacji Google (1.9.22).Korzystanie z klienta OkHttp za pośrednictwem OKClient w Google App Engine zgłasza "java.lang.NoClassDefFoundError: java.net.ProxySelector" jest zastrzeżonym błędem klasy
Oto jak go używać:
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setConnectTimeout(COMPOSER_MODULE_CONNECTION_TIMEOUT, TimeUnit.SECONDS);
okHttpClient.setReadTimeout(COMPOSER_MODULE_SOCKET_TIMEOUT, TimeUnit.SECONDS);
RestAdapter restAdapter = new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.FULL)
.setConverter(new JacksonConverter())
.setEndpoint(ENDPOINT_PATH)
.setClient(new OkClient(okHttpClient))
.build();
To rzuca się następujący błąd:
java.lang.NoClassDefFoundError: java.net.ProxySelector is a restricted class. Please see the Google App Engine developer's guide for more details.
at com.google.apphosting.runtime.security.shared.stub.java.net.ProxySelector.<clinit>(ProxySelector.java)
at com.squareup.okhttp.OkHttpClient.copyWithDefaults(OkHttpClient.java:614)
at com.squareup.okhttp.Call.<init>(Call.java:50)
at com.squareup.okhttp.OkHttpClient.newCall(OkHttpClient.java:595)
at retrofit.client.OkClient.execute(OkClient.java:53)
wnoszę z błędem, że „java.net.ProxySelector” nie jest biało-wymienione do użytku w Google Appengine.
Pytanie 1) Czy możliwe jest korzystanie z OKHTTP (wersja 2.4.0) w czasie modernizacji (1.9.0) na silniku aplikacji Google (1.9.22)? czyli jest tam pracę wokół tego błędu
jeśli nie, Pytanie 2) Czy istnieje inny sposób:
(a) use async HTTP calls with google appengine (with URLFetchService, for instance) ?
(b) set connection and socket timeouts for the client used from (a) ?
linki mam natknąć się poprzez wyszukiwania: (1) Retrofit timeout configuration for clients (2) Google App Engine URL Fetch Java API
Uwaga dla przyszłych czytelników: 'URLFetchClient' nie zadziała w przypadku testów jednostkowych. Jeśli testujesz to, gdy aplikacja jest uruchomiona, jesteś gotowy. –