1

私は最初のテストで最初に HttpURLConnection を使用していました。httpsもサポートしたいのですが、うまくいきません。私は一日中それをしていましたが、今のところ何もありません。過去の問題のほとんどは、証明書の問題に関連しています。奇妙なことに、私の場合、ファイルをダウンロードしますが、ファイルが破損しているか (単純なファイルの場合)、zip の内容が欠落しています (空です)。コードを投稿して、何か間違ったことをしている可能性があるかどうかを確認します。

try{
    URL url = new URL(stuffs[0]);//<-actual url I am searching https://...
    String fileName = stuffs[1];
    String optionalFilePath = stuffs[2] == null ? null : stuffs[2];
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setConnectTimeout(20000);
    connection.connect();
        if(connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
            checkErrorCode(connection.getResponseCode());
            return false;
        }
    InputStream in = new BufferedInputStream(connection.getInputStream());
    FileOutputStream out = null;

        if(optionalFilePath == null)
            out = new FileOutputStream(PATH +"/"+fileName);
        else {
            File newDir = new File(PATH+optionalFilePath);
            newDir.mkdirs();
            out = new FileOutputStream(PATH + (optionalFilePath==null?"":optionalFilePath) +"/"+fileName);
            }

    byte[] buffer = new byte[1024];
    int count;
    while((count = in.read(buffer)) != -1){
        out.write(buffer, 0, count);
        }

    out.flush();
    out.close();
    in.close();
    }

さらにデバッグすると、コンテンツの長さが -1 であることがわかりました。ですから、zipが空である理由は理にかなっていると思います。-1 を返す理由がよくわかりません。Webブラウザで正しくダウンロードします。だから私はそれが存在することを知っています。

4

2 に答える 2

0

答えは、connect() を呼び出していることだと思います。

URL url = new URL(stuffs[0]);//<-actual url I am searching https://...
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(20000);
connection.connect();
if(connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
    checkErrorCode(connection.getResponseCode());
    return false;
}
InputStream in = new BufferedInputStream(connection.getInputStream());

connection.connectを呼び出さず、 を呼び出す行の後に応答コード チェックを移動してみてくださいconnection.getInputStream()

于 2013-07-08T15:06:53.190 に答える