问题描述:
在Android开发中,使用openStream方法在URL对象上读取数据时,可能会出现失败的情况。
解决方法:
URL url = new URL("http://example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream inputStream = connection.getInputStream();
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://example.com")
.build();
Response response = client.newCall(request).execute();
InputStream inputStream = response.body().byteStream();
private class DownloadTask extends AsyncTask {
@Override
protected Void doInBackground(Void... params) {
try {
URL url = new URL("http://example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream inputStream = connection.getInputStream();
// 在这里处理输入流数据
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// 在这里更新UI或执行其他操作
}
}
// 启动异步任务
new DownloadTask().execute();
注意:在Android 9(API级别28)及更高版本中,不允许在主线程中执行网络请求。如果你的应用目标SDK版本较高,请确保使用以上方法之一在子线程中执行网络请求。