1. ホーム
  2. java

[解決済み] "java.lang.UnsupportedOperationException。まだサポートされていません。"

2022-02-28 02:33:54

質問

私がしようとしていること。

私は、Javaを使用してWebポータル[httpsを使用している]に接続しようとしています。 Authenticator クラスを使用してユーザー認証情報を提供するコードを書きましたが、プログラムを実行すると Exception が発生します。

<ブロッククオート

"java.lang.UnsupportedOperationException。未対応です"

私は、投稿されたコードを持っています。

public class Main {

    public class MyAuthenticator extends Authenticator {

        protected PasswordAuthentication getpasswordAuthentication() {
            String username = "username";
            String password = "password";
            // Return the information
            return new PasswordAuthentication(username, password.toCharArray());
        }

        @Override
        public Result authenticate(HttpExchange he) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
    }

    public static void main(String[] args) {
        // TODO code application logic here


        TrustManager[] trustClients = new TrustManager[]{
            new X509TrustManager() {

                public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException {
                    throw new UnsupportedOperationException("Not supported yet.");
                }

                public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException {

                    throw new UnsupportedOperationException("Not supported yet.");
                }

                public X509Certificate[] getAcceptedIssuers() {
                    return null;
                    //throw new UnsupportedOperationException("Not supported yet.");
                }
            }
        };
        try {
            SSLContext sslcontext = SSLContext.getInstance("SSL");
            sslcontext.init(null, trustClients, new java.security.SecureRandom());
            HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory());

        } catch (Exception e) {
            System.out.println("in 1st catch " + e);
        }


        try {
            URL url = new URL("https://someURL.server.com/fmk/jsp/ltpaLogin.jsp");
            URLConnection urlconnection = url.openConnection();
            System.out.println(urlconnection);
            System.out.print(urlconnection.getInputStream().toString());



} catch (Exception e) {
            System.out.println("in 2ndcatch " + e.getMessage());
        }
    }
}

という例外が発生します。Not supported yet"が2回目のトライで発生します。私のアプローチは正しいですか? もし正しくないなら、そうするための代替手段がありますか?

ウェブブラウザでページを開くと、ログインページが表示されます;認証情報を入力すると、ウェブポータルが表示されます。

どなたか、ウェブポータルにアクセスし、認証情報を入力し、認証が成功したかどうかを確認する方法を教えていただけませんか? サンプルコードの断片があれば本当に助かります。 ありがとうございました。

どのように解決するのですか?

このコードを見たことがありますか?

    @Override
    public Result authenticate(HttpExchange he) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

まさに、認証しようとするたびに前述の例外を投げることになるのです。

つまり、このメソッドを実装することで、認証の問題を解決することができるのです。