我有一个Android应用程序,我正在尝试添加DNS SRV记录检测。我知道这是可能的,基于存在的应用程序,如DNS Lookup,这是我安装的,它工作得很好。
我使用的是dnsjava,这段代码在我的机器上作为一个独立的Java应用程序运行得很好,但是当我在我的Android设备上运行它时,我得到了“错误!”消息:
Lookup lookup = new Lookup(serviceName, Type.SRV, DClass.IN);
Resolver resolver = new SimpleResolver();
lookup.setResolver(resolver);
lookup.setCache(null);
Record[] records = lookup.run();
if (lookup.getResult() == Lookup.SUCCESSFUL) {
String responseMessage = null;
String listingType = null;
for (int i=0; i < records.length; i++) {
if (records[i] instanceof SRVRecord) {
listingType = ((SRVRecord) records[i]).toString()
}
}
System.out.println("Found!");
System.out.println("Response Message: "+responseMessage);
System.out.println("Listing type: "+listingType);
} else if (lookup.getResult() == Lookup.HOST_NOT_FOUND) {
System.out.println("Not found.");
} else {
System.out.println("Error!");
}你知道为什么这不管用吗?
发布于 2015-11-23 05:18:44
在Android中使用完全不同的SRV查找设置;我发现它们总是失败,并显示“找不到”,除非我在Android Manifest中添加以下内容:
<uses-permission android:name="android.permission.INTERNET" />发布于 2014-02-26 04:46:29
我不被允许发表评论--否则我会的。
创建更多的else if语句,例如:
else if (lookup.getResult() == Lookup.HOST_NOT_FOUND) {
System.out.println("Not found.");
} else if (lookup.getResult() == Lookup.TRY_AGAIN) {
System.out.println("Error!1");
} else if (lookup.getResult() == Lookup.TYPE_NOT_FOUND) {
System.out.println("Error!2");
} else if (lookup.getResult() == Lookup.UNRECOVERABLE) {
System.out.println("Error!3");
}另外,尝试更改:DClass.IN to DClass.ANY
https://stackoverflow.com/questions/21886803
复制相似问题