为了账号安全,请及时绑定邮箱和手机立即绑定

Android:从 URL 读取文件引发 HttpURLConnectionImpl 错误

Android:从 URL 读取文件引发 HttpURLConnectionImpl 错误

哈士奇WWW 2021-06-29 16:14:57
我使用 Android Studio 创建了一个 android 应用程序,它尝试检查应用程序使用的文件是否有更新版本,该文件存储在资产目录中。我已检查该文件是否可用且可访问,但由于我无法共享文件位置,因此我将在此示例中使用以下文本文件:http : //www.w3.org/TR/PNG/iso_8859-1。文本文件我一直牢记在我的代码中包含以下内容:1- 在 manifest.xml 文件中添加使用权限,如下所示:<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    2- 创建 AsyncTask 以在后台执行文件读取:import android.content.Context;import android.os.AsyncTask;import android.util.Log;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;public class CheckUpdate extends AsyncTask<Void,Void,Boolean>{String filename = "http://www.w3.org/TR/PNG/iso_8859-1.txt";private Context ctx;public CheckUpdate(Context myContext) {    this.ctx = myContext;    doInBackground();}@Overrideprotected Boolean doInBackground(Void... voids) {    try {        URL url = new URL(filename);        File LocalFile = new File("file:///android_asset/test.txt");        HttpURLConnection ucon = (HttpURLConnection) url.openConnection();ucon.setReadTimeout(5000);ucon.setConnectTimeout(10000);ucon.setDoInput(true);        ucon.setDoOutput(true);        ucon.connect();        if (ucon.getResponseCode() == 200) {            InputStream isURL = ucon.getInputStream();            BufferedInputStream inStream = new BufferedInputStream(isURL);            long LocalFileModifiedDate = LocalFile.lastModified();            long ExFileModifiedDate = ucon.getLastModified();            if (LocalFile.exists()) {                LocalFile.delete();            }            if (LocalFileModifiedDate < ExFileModifiedDate) {                LocalFile.createNewFile();                FileOutputStream outStream = new FileOutputStream(LocalFile);                byte[] buff = new byte[5 * 1024];
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 215 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信