4

ドロップ ボックス (パブリックに共有されているパス) から zip ファイルのコンテンツをダウンロードするアプリがあります。HttpURLConnection を使用してダウンロード コードを作成しましたが、意図したとおりに機能せず、代わりに小さな部分をダウンロードしています (31 kb を示す zip ファイルをダウンロードした後、元のサイズは 3 MB です)。私は自分のコードを添付しています。これを解決するのを手伝ってください。

         URL url = new URL("drop box public share url");
        //create the new connection
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setAllowUserInteraction(false);
        urlConnection.setInstanceFollowRedirects(true);
        urlConnection.setConnectTimeout(5 * 1000);
        urlConnection.setRequestMethod("GET");
        urlConnection.setDoOutput(true);
        urlConnection.setDoInput(true);

        urlConnection.connect();
        File SDCardRoot = Environment.getExternalStorageDirectory();
        File file = new File(SDCardRoot,"/download/sample.zip");
        FileOutputStream fileOutput = new FileOutputStream(file);
        InputStream inputStream = urlConnection.getInputStream();
        int totalSize = urlConnection.getContentLength();
        int downloadedSize = 0;
        //create a buffer...
        byte[] buffer = new byte[1024];
        int bufferLength = 0; 
        while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
                fileOutput.write(buffer, 0, bufferLength);
                                    downloadedSize += bufferLength;
                onProgressUpdate(downloadedSize, totalSize);

        }
        //close the output stream when done
        fileOutput.close();
        inputStream.close();
4

2 に答える 2

1

メソッド呼び出しのようです:

setDoOuput(true);

リクエストを POST にします (「 URLConnection.setDoOutput() は正確には何に影響しますか? 」を参照してください) 。

それを削除すると、問題が解決するようです。

于 2012-12-20T10:21:06.130 に答える
0

HttpURLConnectionではなくプレーンURLConnectionを使用してみてください。そして、出力を参照してください。

于 2012-12-20T10:44:51.743 に答える