1

Javaでこの動作をエミュレートしようとしています

curl -u usrname:password http://somewebsite.com/docs/DOC-2264

認証が NTLM なのか Basic なのかわかりません。ユーザー名とパスワードを入力して Web サイトにログインします。フォーム投稿です。上記の curl コマンドを使用すると、ログインしてコンテンツを取得できます。

Javaでこれを行うには、次のことを行いました。

    try {
        URL url = new URL("http://somewebsite.com/docs/DOC-2264");
        String authStr ="username:password";
        String encodedAuthStr = Base64.encodeBytes(authStr.getBytes());
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("POST");
        connection.setDoOutput(true);
        onnection.setRequestProperty("Authorization", "Basic" + encodedAuthStr);

        InputStream content = (InputStream)connection.getInputStream();
        BufferedReader in   = 
            new BufferedReader (new InputStreamReader (content));
        String line;
        while ((line = in.readLine()) != null) {
            System.out.println(line);
        }           


    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

しかし、私はログインページしか取得しません。実際の内容ではありません。私は何を間違っていますか?

4

2 に答える 2

1
  1. (verbose) オプションを追加すると、正確なヘッダーcurlが送信されていることがわかります。-v
  2. Authorizationヘッダーには、base64 でエンコードされたユーザー名/パスワードの前に認証タイプが必要です。次のようになります。Authorization: Basic dXNybmFtZTpwYXNzd29yZA==
于 2012-07-06T20:59:13.797 に答える
0

おそらくcurlはこれと同等のことをするだけです:

URL url = new URL("http://username:password@somewebsite.com/docs/DOC-2264");
于 2012-07-06T20:26:01.397 に答える