0
        URL url = new URL(path);
        HttpURLConnection c = (HttpURLConnection) url.openConnection();
        c.setRequestMethod("GET");
        c.setDoOutput(true);
        c.connect();

        String PATH = "/mnt/sdcard/Android/";
        File file = new File(PATH);
        file.mkdirs();
        File outputFile = new File(file, "version.txt");
        if(outputFile.exists()){
            outputFile.delete();
        }
        FileOutputStream fos = new FileOutputStream(outputFile);        
        InputStream is = c.getInputStream();

        byte[] buffer = new byte[1024];
        int len1 = 0;
        while ((len1 = is.read(buffer)) != -1) {
            fos.write(buffer, 0, len1);
        }
        fos.close();
        is.close();

异常捕获:java.io.FileNotFoundException http://192.168.2.143/version.txt,其中 path="http://192.168.2.143/version.txt",我使用设备中的浏览器打开http://192.168.2.143/version.txt,可以打开。我的清单中有 INTERNET 权限。任何想法?

4

2 回答 2

1

这与我遇到的问题相同:如果您尝试从连接中读取 getInputStream(),HttpUrlConnection 将返回 FileNotFoundException。
当状态码高于 400 时,您应该改用 getErrorStream()。

不仅如此,请注意,因为成功状态码不仅是200,甚至201、204等也经常被用作成功状态。

这是我如何管理它的示例

... connection code code code ...

// Get the response code 
int statusCode = connection.getResponseCode();

InputStream is = null;

if (statusCode >= 200 && statusCode < 400) {
   // Create an InputStream in order to extract the response object
   is = connection.getInputStream();
}
else {
   is = connection.getErrorStream();
}

... callback/response to your handler....

通过这种方式,您将能够在成功和错误情况下获得所需的响应。

希望这可以帮助!

于 2015-06-29T18:30:05.250 回答
0

尝试通过 Internet 读取文件:Reading Text File From Server on Android

我不确定您是否可以使用 File.

于 2013-06-14T05:22:32.963 回答