2012-05-19 5 views
5

एंड्रॉइड में किसी वेबसाइट के आईपी पते को प्रिंट कैसे करें? मैं नेटबीन में system.out.println() का उपयोग कर inetaddress चला सकता हूं और इसे प्रिंट कर सकता हूं। नीचे मेरा नमूना कोडिंग है।एंड्रॉइड में InetAddress

public String getHostAddress() { 
     InetAddress addr=null; 
     try { 
      addr= InetAddress.getByName("www.google.com"); 
     } 

     catch (UnknownHostException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      } 
     return addr.getHostAddress(); 
    } 

यह हमेशा दुर्भाग्य से दिखाता है, आपका प्रोग्राम बंद हो गया है। मई पता है कि एंड्रॉइड में देखी गई वेबसाइट का आईपी पता पाने का कोई तरीका है?

05-19 14:22:39.008: I/dalvikvm(1062): threadid=3: reacting to signal 3 
05-19 14:22:39.049: I/dalvikvm(1062): Wrote stack traces to '/data/anr/traces.txt' 
05-19 14:22:39.688: I/dalvikvm(1062): threadid=3: reacting to signal 3 
05-19 14:22:39.828: I/dalvikvm(1062): Wrote stack traces to '/data/anr/traces.txt' 
05-19 14:22:39.929: D/AndroidRuntime(1062): Shutting down VM 
05-19 14:22:39.948: W/dalvikvm(1062): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 
05-19 14:22:40.039: E/AndroidRuntime(1062): FATAL EXCEPTION: main 
05-19 14:22:40.039: E/AndroidRuntime(1062): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.destinationurl/com.android.destinationurl.DestinationURL}: android.os.NetworkOnMainThreadException 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at android.app.ActivityThread.access$600(ActivityThread.java:123) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at android.os.Looper.loop(Looper.java:137) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at dalvik.system.NativeStart.main(Native Method) 
05-19 14:22:40.039: E/AndroidRuntime(1062): Caused by: android.os.NetworkOnMainThreadException 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at java.net.InetAddress.lookupHostByName(InetAddress.java:391) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at java.net.InetAddress.getByName(InetAddress.java:295) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at com.android.destinationurl.DestinationURL.getHostAddress(DestinationURL.java:57) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at com.android.destinationurl.DestinationURL.onCreate(DestinationURL.java:40) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at android.app.Activity.performCreate(Activity.java:4465) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
05-19 14:22:40.039: E/AndroidRuntime(1062):  ... 11 more 
05-19 14:22:40.248: I/dalvikvm(1062): threadid=3: reacting to signal 3 
05-19 14:22:40.283: I/dalvikvm(1062): Wrote stack traces to '/data/anr/traces.txt' 
05-19 14:22:40.608: I/dalvikvm(1062): threadid=3: reacting to signal 3 
05-19 14:22:40.698: I/dalvikvm(1062): Wrote stack traces to '/data/anr/traces.txt' 
05-19 14:22:42.078: I/Process(1062): Sending signal. PID: 1062 SIG: 9 
+0

1. कृपया क्रैश लॉग पोस्ट करें 2. क्या आपके पास मैनिफेस्ट में इंटरनेट अनुमतियां हैं? – MByD

+2

आपकी त्रुटि इसलिए है क्योंकि आप मुख्य थ्रेड पर नेटवर्क एक्सेस करने का प्रयास कर रहे हैं। देखें [एंड्रॉइड नेटवर्क को कैसे ठीक करें InMainThreadException] (http://www.techblogistech.com/2011/11/how-to-fix-the-android-networkonmainthreadexception/) – Rajesh

+0

कोई भी इस समस्या के बारे में नमूना प्रोजेक्ट दिखा सकता है जो काम कर सकता है ठीक है ... धन्यवाद .. =) – Dummy1234

उत्तर

3
सीधे शब्दों में

,

इसकी यूआरएल पर अपनी गलती, बस इसे सही ..

"www.google.com" आप 4 डब्ल्यू अपने URL में है ...

और जोड़ने का प्रयोग करें-अनुमति <uses-permission android:name="android.permission.INTERNET"> अपने Android आवेदन की मैनिफ़ेस्ट फ़ाइल में ..

.. यह एक सही है

addr = InetAddress.getByName("www.google.com");

संपादित करें: के लिए नेटवर्क ऑपरेशन

String netAddress = null; 
try 
    { 
    netAddress = new NetTask().execute("www.google.com").get(); 
    } 
    catch (Exception e1) 
    { 
    e1.printStackTrace(); 
    } 

उपयोग AsyncTask और यह एक है NetTask वर्ग ..

public class NetTask extends AsyncTask<String, Integer, String> 
    { 
     @Override 
     protected String doInBackground(String... params) 
     { 
      InetAddress addr = null; 
      try 
      { 
       addr = InetAddress.getByName(params[0]); 
      } 

      catch (UnknownHostException e) 
      { 
          e.printStackTrace(); 
      } 
      return addr.getHostAddress(); 
     } 
    } 
+0

wwww सिर्फ एक टाइपो है ... मैं पहले ही उपयोग-अनुमति जोड़ता हूं, समस्या बनी हुई है .. – Dummy1234

+0

आपका कोड मेरे मामले में, मुख्य धागे में सही काम करता है .. आपकी लॉगक त्रुटि NetworkOnMainThreadException पर इशारा करते हैं, इसलिए इस कोड को अन्य कार्यकर्ता धागे में रखें .. – user370305

+0

आपको बहुत धन्यवाद ... – Dummy1234

1

सुनिश्चित करें कि आपके पास आवश्यक सभी अनुमतियां हैं। हो सकता है कि आपका एप्लिकेशन रुक जाए क्योंकि इसकी उचित अनुमति नहीं है। जांचें कि क्या आपके एक्सएमएल मैनिफेस्ट में इंटरनेट एक्सेस अनुमति है या नहीं।

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

आप URL गलत तरीके से साथ wwww .google.com दर्ज किया है।

addr= InetAddress.getByName("www.google.com"); 

सुधार के बाद यह काम किया।

0

इसका कारण यह है तुम पर एक नेटवर्क कॉल कर रहे हैं मुख्य धागा

String address = ""; 
AsyncTask.execute(new Runnable() { 
    @Override 
    public void run() { 
     address = InetAddress.getByName("www.google.com"); 
    } 
}); 
संबंधित मुद्दे