2014-02-19 68 views
0

我有一个Android应用程序,我试图添加DNS SRV记录检测。我知道这是可能的,基于我已经安装的应用程序的存在,如DNS Lookup,它工作得很好。dnsjava和Android

我使用的是dnsjava,该代码作为独立的Java应用程序在我的机器上运行良好,但是当我在Android设备上运行它时,我只是得到“Error!”消息:

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!"); 
} 

任何想法为什么这不起作用?

回答

0

我不能评论 - 否则我会。

让更多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

1

使用在Android的SRV查找一个非常不同的设置;我发现他们总是以'未找到'失败,除非我在Android Manifest中添加以下内容:

<uses-permission android:name="android.permission.INTERNET" />