2010-06-28 3 views
3

Я получил отчеты от нескольких пользователей о том, что они не смогли войти в наше приложение (что делает HTTP-запросы на наш сайт) или посетить наш веб-сайт в своем браузере, поэтому я добавил код в нашу последнюю версию для проверки того, что IP-адрес нашего хоста разрешает. Теперь я получаю отчеты от нескольких разных пользователей, которые получают 127.0.0.1 для нашего имени хоста при запуске приложения, которое, очевидно, не будет работать.Проблемы с DNS на Android

Они утверждают, что у них нет прокси-программного обеспечения, и это происходит как на 2.1, так и на 2.2. Это также происходит как на wifi & 3g, что заставляет меня подозревать, что это некоторая часть программного обеспечения на телефоне, которая каким-то образом мешает разрешению DNS. Кто-нибудь знает о любом популярном программном обеспечении, которое может это сделать? Или у кого-нибудь есть идеи о том, как определить, какое программное обеспечение может это сделать?

Спасибо,

+1

Вы знаете, какие ISP они используют? Он может сам провайдер блокировать какой-либо адрес, помещая поддельную зону в свой DNS. AFAIK, единственный способ заставить адрес, который должен быть разрешен в 127.0.0.1 через программное обеспечение, - записать запись в файл/etc/host, и это можно сделать только на корневом телефоне –

+0

Можете ли вы поделиться добавленным вами кодом получить такую ​​информацию? – Macarse

+0

Macarse, я просто делаю InetAddress.getByName (имя хоста), после проверки, что сеть работает с getActiveNetworkInfo – twk

ответ

0

Получить их DNS-конфигурации, и попробовать свои DNS-серверы непосредственно рыть или NSLOOKUP. Это не идеально, но у него есть хороший шанс показать вам проблему.

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 
Смежные вопросы