我正在尝试访问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/