我正在尝试访问HP ALM rest api,以使用java获取登录身份验证令牌,但是rest api抛出UnknownHostException。

private static final String almURL = "https://myalmUrl.com/qcbin";
private static final String isAuthenticatedPath = "authentication-point/authenticate";
public static String strUserName = "username";
public static String strPassword = "password";

    private static String getEncodedAuthString() {
            String auth = strUserName + ":" + strPassword;
            byte[] encodedAuth = Base64.getEncoder().encode(auth.getBytes());
            String authHeader = "Basic " + new String(encodedAuth);
            return authHeader;
        }

    public static void main(String args[]) {
            client = ClientBuilder.newBuilder().build();
            target = client.target(almURL).path(isAuthenticatedPath);
            invocationBuilder = target.request(new String[] { "application/xml" });
            invocationBuilder.header("Authorization", getEncodedAuthString());
            res = invocationBuilder.get(); // error occured
    }


错误:Exception in thread "main" javax.ws.rs.ProcessingException: java.net.UnknownHostException: myalmUrl.com

这段代码有什么问题?我该如何解决?

最佳答案

原因:通常,当您无法解析所提供URL的DNS记录时,就会触发UnknownHostException。该操作有一个合理的超时时间,但是如果您的Wi-Fi连接较弱或者设备上的信号不足,则在发送请求和接收响应之间可能会中断通信,因此您的设备没有收到响应,因此认为这是DNS超时。

长话短说,有两个例外的主要原因:


如果您的Wi-Fi信号较弱。
如果您的设备已连接到Wi-Fi,但没有互联网,
可用。


解决方案:在请求之前,请使用HttpURLConnection类检查Internet的可用性。

关于java - 如何在Java中修复UnknownHostException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57270806/

10-09 07:06