3

これがコードです。

package downloader;

import java.net.MalformedURLException;
import java.net.URL;
import java.io.File;
import java.io.IOException;

public class JustATest {
    public static void main(String[] args) throws IOException {
        File file = new File("D:" + "//" + "Hunter x Hunter 340 - 00 - créditos.jpg");
        URL url = new URL("http://leitor1.mangasproject.com/3e1e967e9b793e908f8eae83c74dba9bcccce6a5535b4b462bd9994537bfe15c/1c96b0ef48b44ff71102d96f7ac2b515a0b7be31d04d7420f3d133d923189953/Hunter x Hunter 340 - 00 - créditos.jpg");
        org.apache.commons.io.FileUtils.copyURLToFile(url, file);
    }
}

このコードを実行すると、次のエラーが発生します。

    Exception in thread "main" java.io.FileNotFoundException: http://leitor1.mangasproject.com/3e1e967e9b793e908f8eae83c74dba9bcccce6a5535b4b462bd9994537bfe15c/1c96b0ef48b44ff71102d96f7ac2b515a0b7be31d04d7420f3d133d923189953/Hunter x Hunter 340 - 00 - créditos.jpg
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.URL.openStream(Unknown Source)
at org.apache.commons.io.FileUtils.copyURLToFile(FileUtils.java:1460)
at downloader.JustATest.main(JustATest.java:14)

使ってみた

InputStream in = new BufferedInputStream(url.openStream()); 

しかし、これもうまくいきませんでした。

編集:NetBeansではすべてのコードが正常に機能すると言わざるを得ませんが、Eclipseでコーディングしています。:( このホストのほとんどのファイルは Eclipse で正常に動作するとも言わなければなりません。

4

6 に答える 6

2

URLEncoder.encode(IMAGE_URL, "UTF-8")プレーンな画像 URL だけではなく、URL に渡してみてください。

于 2013-08-13T19:01:41.197 に答える
1

私は問題を見つけたと言うために私の質問に答えています。Eclipse の場合: .class > プロパティを右クリックし、[リソース] で [エンコード] 設定を変更します。私のはCp1252でした。UTF-8 に変更したところ、コードがめちゃくちゃになりました。私はそれを修正し、現在は機能しています。

「スペース」を「%20」などに変更する必要があるため、実際にはすべての答えが正しいです。ありがとうございました。

于 2013-08-14T03:36:25.937 に答える
1

サイトがファイルのリーチングを好まない可能性があります。それを理解するには、このようなサイトを使用する許可がある場合は、apache から HttpComponents を使用して、最初にホームページまたは画像を制限するページに移動できます。メインの html/php/jsp/xyz ページだけですべての js と css をダウンロードし、そこから Cookie を使用して画像を取得する必要はありません。

このコードは、URL も処理します。http://wiki.apache.org/HttpComponents/QuickStartから適応

import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;

/**
 * A example that demonstrates how HttpClient APIs can be used to perform
 * form-based logon.
 * based on 2008-2009 version 4 API http://hc.apache.org/
 */
public class ClientFormLogin {

public static void main(String[] args) throws Exception {

    DefaultHttpClient httpclient = new DefaultHttpClient();

    HttpGet httpget = new HttpGet("https://portal.sun.com/portal/dt");

    HttpResponse response = httpclient.execute(httpget);
    HttpEntity entity = response.getEntity();

    System.out.println("first page get: " + response.getStatusLine());
    if (entity != null) {
        entity.consumeContent();
    }
    System.out.println("Initial set of cookies:");
    List<Cookie> cookies = httpclient.getCookieStore().getCookies();
    if (cookies.isEmpty()) {
        System.out.println("None");
    } else {
        for (int i = 0; i < cookies.size(); i++) {
            System.out.println("- " + cookies.get(i).toString());
        }
    }

    httpget = new HttpGet("<url-to-img>");


    response = httpclient.execute(httpget);


    System.out.println("Login form get: " + response.getStatusLine());
    if (entity != null) {
        byte[] data = HttpEntity.toByteArray(response);
//save to file
    }

    System.out.println("Post logon cookies:");
    cookies = httpclient.getCookieStore().getCookies();
    if (cookies.isEmpty()) {
        System.out.println("None");
    } else {
        for (int i = 0; i < cookies.size(); i++) {
            System.out.println("- " + cookies.get(i).toString());
        }
    }
}
}
于 2013-08-13T20:54:57.223 に答える