2014-02-19 24 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" />