24

mp3ファイルをURLからダウンロードしたい: "http://upload13.music.qzone.soso.com/30671794.mp3"、常にjava.io.IOException:サーバーがURLに対してHTTP応答コード:403を返しました。ただし、ブラウザを使用してURLを開いても問題ありません。以下は私のコードの一部です:

BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
    URL url = new URL(link);

    URLConnection urlConn = url.openConnection();
    urlConn.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");

    String contentType = urlConn.getContentType();

    System.out.println("contentType:" + contentType);

    InputStream is = urlConn.getInputStream();
    bis = new BufferedInputStream(is, 4 * 1024);
    bos = new BufferedOutputStream(new FileOutputStream(
    fileName.toString()));​

誰かが私を助けることができますか?前もって感謝します!

4

5 に答える 5

60

使用することもできます

System.setProperty("http.agent", "Chrome");

それは私のために働いた。

//アップデート

説明

HttpURLConnection は、設定されている場合、プロパティ「http.agent」を読み取るためです。ここで読むことができます: https://www.innovation.ch/java/HTTPClient/advanced_info.html

または、HttpURLConnection クラスのソース コードで調べることもできます。

String agent = java.security.AccessController.doPrivileged(new sun.security.action.GetPropertyAction("http.agent"));

于 2016-03-15T16:06:17.127 に答える
28

URLConnectionJavaで使用する代わりに、使用HttpURLConnectionすると、要求された Web ページに Java からアクセスできるはずです。次のコードを試してください。

 HttpURLConnection httpcon = (HttpURLConnection) url.openConnection(); 
 httpcon.addRequestProperty("User-Agent", "Mozilla/4.76"); 

通常の Java を使用しurlConnectionたインターネットへのアクセスは受け入れられません。ブラウザにアクセスするには、例外なく検索を実行する必要がありますHTTP response code : 403 for URL


編集 (@Mordechai): キャストを行う必要はありません。ユーザー エージェントを追加するだけです。

于 2011-03-05T06:47:36.783 に答える
2

ブラウザでURLにアクセスすると、403も表示されます。ブラウザでサイトにログインしている可能性がありますか?

その場合、ブラウザからCookieを複製して送信する必要があります。サイトが追加のチェックを行う場合は、ブラウザの署名を複製するためにさらに多くのことを行う必要があります。

次を追加してCookieを設定できます。

urlConn.setRequestProperty("Cookie", "foo=bar"); 

ここで、foo = barは、ブラウザでサイトのCookieを見つけたときに見つかるキーと値のペアです。

于 2010-10-06T03:50:18.240 に答える
2

問題は、ステータス コードによって示されます。403は実際には「禁止」を意味し、サーバーがクライアントに示したくない(または示す手段がない)理由でリクエストが拒否されたことを意味します。

問題はサーバー側にあります。

于 2011-07-23T19:30:03.573 に答える