我想做什么:
我正在尝试使用Java连接到使用https的Web Portal。 我编写了使用Authenticator类提供用户凭据的代码。当我运行程序时,我得到一个异常:“java.lang.UnsupportedOperationException:Not supported yet”
我已发布代码:
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());
}
}
}
异常“java.lang.UnsupportedOperationException:Not supported yet”在第二次尝试中引发我的方法是否正确?如果没有,有没有其他选择呢?
当我在网络浏览器中打开页面时,我会获得登录页面;一旦我提供了我的凭据,就会显示网络门户
任何人都可以建议如何点击webportal并提供我的凭据并检查身份验证是否成功? 任何示例代码段都非常有用 提前谢谢..
答案 0 :(得分:8)
如果您不想实现此方法:
@Override
public Result authenticate(HttpExchange he) {
throw new UnsupportedOperationException("Not supported yet.");
}
放轻松,只删除这一行方法:
throw new UnsupportedOperationException("Not supported yet.");
答案 1 :(得分:7)
你见过这段代码吗?
@Override
public Result authenticate(HttpExchange he) {
throw new UnsupportedOperationException("Not supported yet.");
}
每次尝试进行身份验证时,都会抛出上述异常。
因此,在我看来,您的身份验证问题的解决方案非常简单:实现此方法。
答案 2 :(得分:2)
您可能已经使用诸如Netbeans之类的IDE来实现接口/覆盖需要某些方法实现的抽象类。当IDE执行此操作(Netbeans肯定会这样做)时,它们会为您生成方法存根,因此代码仍会编译,但如果您尝试调用一个实际上未实现的方法,则会出现不可避免的错误。
通常这意味着你必须实现给定的方法,但有时一个实现确实需要一个空方法存根,在这种情况下只需删除引发异常的行。
答案 3 :(得分:0)
如果您没有从已实现的接口提供所有方法的实现,就会发生这种情况。检查您未实施的方法。
答案 4 :(得分:0)
您不会为您的方法提供帮助。检查出现问题的行,并用所需的代码覆盖您的方法。