2010-06-28 64 views
3

我收到了一些用戶的報告,他們無法登錄到我們的應用程序(這使HTTP調用到我們的網站)或瀏覽我們的網站,所以我添加了一些代碼到我們的最新版本檢查我們的主機名解析爲什麼IP。我從幾個不同的用戶那裏得到了報告,他們在應用程序啓動時爲我們的主機名獲得了127.0.0.1,這顯然不起作用。Android上的DNS問題

他們聲稱他們沒有運行任何代理軟件,並且這發生在2.1和2.2上。這也發生在兩個WiFi & 3G,這讓我懷疑他們的手機上的某些軟件會以某種方式干擾DNS解析。有誰知道任何流行的軟件可以做到這一點?還是有人有任何想法如何確定哪些軟件可能會這樣做?

感謝,

+1

你知道他們使用的ISP?它可能是ISP自己通過將虛假區域放入他們的DNS來阻止某個地址。 AFAIK,強制通過軟件將地址解析爲127.0.0.1的唯一方法是向/ etc/host文件中寫入一個條目,並且該條目只能在固定電話上完成 – 2010-06-28 20:45:37

+0

您是否可以共享您添加的代碼獲取那種​​信息? – Macarse 2010-06-29 02:36:27

+0

Macarse,我只是做InetAddress.getByName(主機名),在檢查網絡是否與getActiveNetworkInfo – twk 2010-06-29 04:54:03

回答

0

獲取他們的DNS配置,並直接與挖掘或Nslookup的嘗試他們的DNS服務器。這並不完美,但它很有可能向您顯示問題。

1
import org.xbill.DNS.Lookup; 
import org.xbill.DNS.Record; 
import org.xbill.DNS.TXTRecord; 
import org.xbill.DNS.TextParseException; 
import org.xbill.DNS.Type; 

public class DNSLookUpActivity extends Activity { 
    private String url = "https://spectracore.americanlogistics.com/rdac/AdmissionController/CheckMddAdmission"; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     funDNS(url); 

    } 

    private static void funDNS(String url) { 

     try { 
      Lookup lookup = new Lookup(url, Type.ANY); 
      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 TXTRecord) { 
         TXTRecord txt = (TXTRecord) records[i]; 
         for (Iterator j = txt.getStrings().iterator(); j 
           .hasNext();) { 
          responseMessage += (String) j.next(); 
         } 
         Log.e("TXRecord ", "" + responseMessage); 
        } else if (records[i] instanceof ARecord) { 
         listingType = ((ARecord) records[i]).getAddress() 
           .getHostAddress(); 
         Log.e("ARecord address : ", "" + listingType); 
        } 
       } 
      } 
     } catch (TextParseException e) { 
      e.printStackTrace(); 
     } 

    } 
} 
Need android ask version 2.3.3 or above