2014-07-12 18 views
9

mi chiedo se siamo in grado di accedere alla rete attraverso HttpURLConnection da Android Wear?supporto fa Android Wear HttpURLConnection - ottenere EOFException

Ho provato a utilizzare HttpURLConnection all'interno del codice Wear, sto ricevendo EOFException. Lo stesso codice funziona dal normale telefono Android. Ha solo problemi quando è su Android Wear.

Se HttpURLConnection non è supportato su Wear, dovremmo usare il client Apache Http o qualcos'altro?

O forse il modo in cui sto lanciando l'app per lo sviluppo non è corretto?

 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(); 

Ho aggiunto il permesso in Android manifest. Eseguo anche il codice sopra da un AsyncTask.

EOFException si verifica a 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) 

Grazie mille per il vostro aiuto.

risposta

10

Sfortunatamente, no.

Le applicazioni Android Wear non possono accedere direttamente a Internet. Devono comunicare con la corrispondente app del palmare (tramite MessageApi o DataApi) e richiedere che esegua qualsiasi richiesta HTTP necessaria.


EDIT: Android Wear 2.0, ora in beta, supports network requests, così HttpURLConnection dovrebbe lavorare lì.

+0

Ciò significa che per il dispositivo di usura per accedere a Internet, il dispositivo di usura deve parlare con l'app del telefono. quindi l'app del telefono cellulare deve agire come un proxy? – ssw

+0

@ ssw Sì, precisamente. Almeno per come stanno le cose ora. – matiash

+1

Grazie per la risposta. Ancora non riesco a trovare alcuna menzione del fatto che il materiale di rete non è supportato. La cosa divertente è che la pagina degli sviluppatori di Android Wear non dice che le cose in rete non sono supportate. Si menziona soltanto che i seguenti pacchetti non sono supportati: android.webkit, android.print, android.app.backup, android.appwidget, android.hardware.usb. fonte: http://developer.android.com/training/wearables/apps/index.html – ssw