1

特定のURLからHTMLコンテンツを読み取るための簡単なプログラムを試しています。この場合に試しているURLには、cookie / username / passwordは必要ありませんが、それでもio.IOExceptionが発生します:サーバーがHTTP応答コード:403エラーを返しました。誰かが私がここで間違っていることを教えてもらえますか?(SOにも同様の質問があることは知っていますが、役に立ちませんでした):

    import java.net.*;
import java.io.*;
import java.net.MalformedURLException;
import java.io.IOException;
public class urlcont {
public static void main(String[] args) {
try {
  URL u = new URL("http://www.amnesty.org/");
  URLConnection uc = u.openConnection();
  uc.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
  uc.connect();
  InputStream in = uc.getInputStream();
  int b;
  File f = new File("C:\\Users\\kausta\\Desktop\\urlcont.txt");
  f.createNewFile();
  OutputStream s = new FileOutputStream(f);
  while ((b = in.read()) != -1) {
    s.write(b);
  }
}
catch (MalformedURLException e) {System.err.println(e);}
catch (IOException e) {System.err.println(e);} 
}
}
4

3 に答える 3

3

ブラウザーで URL を取得できるが、Java 経由では取得できない場合は、ユーザー エージェント フィルタリングを介してページへのプログラムによるアクセスをブロックしていることを示しています。コードが Web サーバーに対して Web ブラウザとして表示されるように、接続にユーザー エージェントを設定してみてください。

それに関するヘルプについては、このスレッドを参照してください: URLConnection でヘッダーを設定する適切な方法は何ですか?

于 2013-01-11T14:51:04.917 に答える
1

許可の問題があります:

Web サーバーは、Web ページまたはリソースに対するクライアントからの要求に応答して 403 Forbidden HTTP ステータス コードを返し、サーバーが要求されたアクションの許可を拒否していることを示す場合があります。

于 2013-01-11T14:46:50.053 に答える
0

ファイルへのアクセスが許可されていないため、アクセスしようとしているサーバーがリクエストをブロックしています。

Http-Error 403 は Forbidden を意味します --> リモート サーバーがリクエストをブロックします。

必要なドキュメントにアクセスするために認証を与える必要があるかどうかを確認し、その場合はリクエストでそれを提供してください;)

于 2013-01-11T14:47:37.467 に答える