我想知道,如果我们可以通过访问网络HttpURLConnection的从Android 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();
Run Code Online (Sandbox Code Playgroud)
我确实将权限添加到了android清单中.我还从AsyncTask运行上面的代码.
EOFException发生在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)
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助.
我试图构建一个显示来自互联网的图片的应用程序.
我使用了一个功能,它在我的手机(Galaxy S3 - Android 4.3)上运行良好,但在手表上我得到一个java.io.EOFException例外.
代码(在手机上工作):
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
//Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
Run Code Online (Sandbox Code Playgroud)
其他功能抛出一个org.apache.http.NoHttpResponseException
手表配对和在线,因为我可以使用语音命令和搜索网络等.
所以问题是:我可以直接从Android Wear访问网络,还是需要在手机上处理所有这些任务?或者我的设置有问题吗?
我找不到任何关于Android Wear的文档,它们展示了如何创建一个应用程序,利用一些手表(如我的三星Galaxy Gear)现在可以通过wi-fi直接连接到互联网的事实.
我有几个应用程序生成访问REST服务的https请求,我想知道是否可以从连接到Wi-Fi(没有手机)的Wear应用程序直接调用这些应用程序.
类似的问题似乎没有回答这个问题:
Android:与联网设备建立"Wi-Fi Direct"连接
我在Wear模拟器上进行的测试拴在支持互联网的手机模拟器上:
java.net.UnknownHostException:无法解析主机"api.xxx.com":没有与主机名关联的地址
但当然手表模拟器上没有直接的Wi-Fi连接,所以我的下一步是尝试真正的手表和手机.
我怀疑Android Wear的数据API是否透明地处理这一点,因此直接的http请求似乎是不可能的.
最好的,提前感谢您的帮助.
我正在制作一个简单的Android Wear应用来控制我的恒温器,我正在用Volley发送POST请求来控制它们.Android Wear模拟器中的一切都运行良好(请求有效),但是,当应用程序在我的Moto 360上加载时,凌空请求被调用,但总是超时.
为什么我的截击请求会在我的手表上失败但是在模拟器上工作?其他应用程序的请求在我的手表上成功(例如,内置天气应用程序可以在大约3秒内加载天气数据).而且,最奇怪的部分:我的应用程序在我的手表上工作(成功发出截击请求),并且,在我从Android Studio安装到我的手表大约一天之后,它突然停止加载数据,原因并非明显.
到目前为止我尝试过的:
manifest.xml.这是我的代码(来自我的主视图的适配器):
public void refreshThermostatsRecyclerView(RequestQueue queue) {
String url = "https://mobile.skyport.io:9090/login"; // login call to the thermostats server Skyport
Log.w("myApp", "Starting /login call to Skyport"); // this gets called on simulator and watch
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
Response.Listener<String>() {
@Override
public void onResponse(String response) {
// …Run Code Online (Sandbox Code Playgroud)