2014-07-12 5 views
9

Zastanawiam się, czy możemy uzyskać dostęp do sieci za pośrednictwem HttpURLConnection z Android Wear?Czy Android Wear wsparcie HttpURLConnection - coraz EOFException

Próbowałem za pomocą HttpURLConnection wewnątrz kodu Wear, otrzymuję EOFException. Ten sam kod działa na zwykłym telefonie z Androidem. Ma tylko problem z Androidem Wear.

Jeśli funkcja HttpURLConnection nie jest obsługiwana przez Wear, czy powinniśmy używać klienta Apache Http lub czegoś innego?

A może sposób, w jaki uruchamiam aplikację do programowania, jest nieprawidłowy?

 URL url = new URL(myurl); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setReadTimeout(10000 /* milliseconds */); 
     conn.setConnectTimeout(15000 /* milliseconds */); 
     conn.setRequestMethod("GET"); 
     conn.setDoInput(true); 
     // Starts the query 
     conn.connect(); 
     int response = conn.getResponseCode(); 

Dodałem uprawnienia do manifestu Androida. Też uruchomiłem powyższy kod z AsyncTask.

EOFException występuje pod adresem conn.getResponseCode().

java.io.EOFException 
     at com.android.okhttp.internal.Util.readAsciiLine(Util.java:342) 
     at com.android.okhttp.internal.http.RawHeaders.fromBytes(RawHeaders.java:311) 
     at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:135) 
     at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:644) 
     at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:353) 
     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:297) 
     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:509) 

Dziękuję bardzo za pomoc.

Odpowiedz

10

Niestety, nie.

Aplikacje Android Wear nie mają bezpośredniego dostępu do Internetu. Muszą komunikować się z odpowiednią ręczną aplikacją (za pośrednictwem MessageApi lub DataApi) i zażądać wykonania wszystkich żądań HTTP, których potrzebujesz.


EDIT: Android Wear 2.0, obecnie w fazie beta, supports network requests, więc HttpURLConnection powinny działać tam.

+0

Czy to oznacza, że ​​aby urządzenie zużywające się mogło uzyskać dostęp do Internetu, urządzenie zużywające się musi komunikować się z aplikacją telefonu komórkowego. to aplikacja na telefon komórkowy musi działać jako proxy? – ssw

+0

@ssw Tak, właśnie. Przynajmniej w tej chwili. – matiash

+1

Dzięki za odpowiedź. Nadal nie mogę znaleźć żadnej wzmianki, że elementy sieciowe nie są obsługiwane. Najśmieszniejsze jest to, że strona z programistą Android Wear nie mówi, że elementy sieciowe nie są obsługiwane. To tylko wspomina, że ​​następujące pakiety nie są obsługiwane: android.webkit, android.print, android.app.backup, android.appwidget, android.hardware.usb. źródło: http://developer.android.com/training/wearables/apps/index.html – ssw