安卓手表是否支持HttpURLConnection - 出现EOFException

9

我想知道我们是否可以通过HttpURLConnectionAndroid Wear访问网络?

我在Wear代码中使用HttpURLConnection时,遇到了EOFException错误。同样的代码在常规的Android手机上运行正常,仅在Android Wear上存在问题。

如果Wear不支持HttpURLConnection,我们应该使用Apache Http客户端或其他方法吗?

或者是我开发应用程序的方式有误?

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

我已经将权限添加到Android清单中。我还从AsyncTask运行了上面的代码。
EOFException发生在处。
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)

非常感谢您的帮助。
1个回答

10

很抱歉,不行。

Android Wear应用程序无法直接访问互联网。它们必须通过其对应的手持应用程序(通过MessageApiDataApi)通信,并请求其执行您需要的任何HTTP请求。


编辑: Android Wear 2.0目前处于beta版,支持网络请求,因此在其中HttpURLConnection应该可以工作。


这是否意味着,为了使可穿戴设备访问互联网,可穿戴设备必须与手机应用程序通信,然后手机应用程序必须充当代理? - ssw
1
谢谢回复。 我仍然找不到任何提到网络功能不受支持的信息。 有趣的是,Android Wear开发者页面并没有说网络功能不受支持。它只提到以下包不受支持:android.webkit, android.print, android.app.backup, android.appwidget, android.hardware.usb。来源:http://developer.android.com/training/wearables/apps/index.html - ssw
@ssw 我理解你对这个问题缺乏官方文档的观点。但事实是,目前从可穿戴设备直接访问互联网是不可能的。无论是出于设计决策(可能是为了节省电池寿命)还是暂时的限制,都是未知的,但现在它无法正常工作。 - matiash
http://developer.android.com/training/wearables/data-layer/index.html 有一个警告部分,其中指出:“警告:因为这些API是设计用于手持设备和可穿戴设备之间的通信,这些是您应该用来设置这些设备之间通信的唯一API。例如,不要尝试打开低级套接字以创建通信通道。”抱歉:( - Abhay Buch
1
没错,但我理解为我们应该使用可穿戴数据层 API 在手持设备和可穿戴设备之间进行通信。而且我们不应该使用自己的套接字在手持设备和可穿戴设备之间进行通信。但我认为这意味着使用套接字与外界通信是可能的,只是我们不想在手持设备和可穿戴设备之间使用它。 - ssw
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接