java.net.UnknownHostException: Nu se poate rezolva gazda „„: Nu există o adresă asociată cu numele de gazdă și Sfârșitul intrării la caracterul 0 din (Programare, Java, Android, Servicii Web, Android Asynctask)

Reshma a intrebat.

Am creat o aplicație care încarcă o întrebare din serviciile mele web și funcționează bine. Dar, uneori se blochează și nu înțeleg motivul pentru care se întâmplă acest lucru, mai ales că i-am acordat și permisiunile necesare. Funcționează bine, dar la întâmplare, se blochează și îmi dă acest raport.

private void sendContinentQuestions(int id) {
    // TODO Auto-generated method stub

    //Get the data (see above)
    JSONArray json = getJSONfromURL(id);
        try{
            for(int i=0; i < json.length(); i++) {
                HashMap<String, String> map = new HashMap<String, String>();
                JSONObject jObject = json.getJSONObject(i);
                longitude":"72.5660200"
                String category_id = jObject.getString("category_id");
                String question_id = jObject.getString("question_id");
                String question_name = jObject.getString("question_name");
                String latitude = jObject.getString("latitude");
                String longitude = jObject.getString("longitude");
                String answer = jObject.getString("answer");
                String ansLatLng = latitude+"|"+longitude ; 
                Log.v("## data:: ###",question_id+"--"+question_name+"-cat id-"+category_id+"--ansLatLng "+ansLatLng+" answer: "+answer);

                all_question.add(new QuestionData(game_id,category_id,question_id,question_name,ansLatLng,answer));
            }
        }catch(JSONException e)        {
            Log.e("log_tag", "Error parsing data "+e.toString());
        }
    }


}
 public JSONArray getJSONfromURL(int id){

    String response = "";
    URL url;
    try {
        url = new URL(Consts.GET_URL+"index.php/Api/getQuestion?cat_id="+id);
        HttpURLConnection http = (HttpURLConnection) url.openConnection();
        http.setRequestMethod("POST");
        InputStream is = http.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        response = br.readLine();
        Log.v("###Response :: ###",response);
        http.disconnect();
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }catch (ProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace(); 
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
    //try parse the string to a JSON object
    JSONArray jArray = null;
    try{

        jArray = new JSONArray(response);

    }catch(JSONException e){
        Log.e("log_tag", "Error parsing data "+e.toString());
    }

    return jArray;
}

11-13 15:02:52.307: W/System.err(8012): java.net.UnknownHostException: Unable to resolve host "www.xyz.com": No address associated with hostname
11-13 15:02:52.317: W/System.err(8012):     at java.net.InetAddress.lookupHostByName(InetAddress.java:424)
11-13 15:02:52.317: W/System.err(8012):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
11-13 15:02:52.317: W/System.err(8012):     at java.net.InetAddress.getAllByName(InetAddress.java:214)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpEngine.connect(HttpEngine.java:311)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:282)
11-13 15:02:52.317: W/System.err(8012):     at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
11-13 15:02:52.327: W/System.err(8012):     at com.abc.xyz.ContinentActivity.getJSONfromURL(ContinentActivity.java:400)
11-13 15:02:52.327: W/System.err(8012):     at com.abc.xyz.ContinentActivity.sendContinentQuestions(ContinentActivity.java:327)
11-13 15:02:52.327: W/System.err(8012):     at com.abc.xyz.ContinentActivity.access$2(ContinentActivity.java:323)
11-13 15:02:52.327: W/System.err(8012):     at com.abc.xyz.ContinentActivity$LoadQuestions.doInBackground(ContinentActivity.java:254)
11-13 15:02:52.327: W/System.err(8012):     at com.abc.xyz.ContinentActivity$LoadQuestions.doInBackground(ContinentActivity.java:1)
11-13 15:02:52.327: W/System.err(8012):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
11-13 15:02:52.327: W/System.err(8012):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
11-13 15:02:52.327: W/System.err(8012):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
11-13 15:02:52.327: W/System.err(8012):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
11-13 15:02:52.337: W/System.err(8012):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
11-13 15:02:52.337: W/System.err(8012):     at java.lang.Thread.run(Thread.java:841)
11-13 15:02:52.337: W/System.err(8012): Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
11-13 15:02:52.337: W/System.err(8012):     at libcore.io.Posix.getaddrinfo(Native Method)
11-13 15:02:52.337: W/System.err(8012):     at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:61)
11-13 15:02:52.337: W/System.err(8012):     at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
11-13 15:02:52.337: W/System.err(8012):     ... 24 more
11-13 15:02:52.337: E/log_tag(8012): Error parsing data org.json.JSONException: End of input at character 0 of 
11-13 15:02:52.337: W/dalvikvm(8012): threadid=194: thread exiting with uncaught exception (group=0x417c1700)
11-13 15:02:52.337: E/AndroidRuntime(8012): FATAL EXCEPTION: AsyncTask #5
11-13 15:02:52.337: E/AndroidRuntime(8012): java.lang.RuntimeException: An error occured while executing doInBackground()
11-13 15:02:52.337: E/AndroidRuntime(8012):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.lang.Thread.run(Thread.java:841)
11-13 15:02:52.337: E/AndroidRuntime(8012): Caused by: java.lang.NullPointerException
11-13 15:02:52.337: E/AndroidRuntime(8012):     at com.abc.xyz.ContinentActivity.sendContinentQuestions(ContinentActivity.java:328)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at com.abc.xyz.ContinentActivity.access$2(ContinentActivity.java:323)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at com.abc.xyz.ContinentActivity$LoadQuestions.doInBackground(ContinentActivity.java:254)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at com.abc.xyz.ContinentActivity$LoadQuestions.doInBackground(ContinentActivity.java:1)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
11-13 15:02:52.337: E/AndroidRuntime(8012):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)

Comentarii

    16

  • Sunteți conectat la internet? –  > Por Apoorv.
  • Primiți răspunsul tipărit în jurnal ? –  > Por GrIsHu.
  • Da, am verificat conexiunea la internet. –  > Por Reshma.
  • Verificați dacă telefonul poate accesa acest url (în browser, de exemplu) – user180100
  • Nu încercați cu simulatorul, am avut aceeași problemă. Și mi-am petrecut 1 zi încercând să o rezolv. În cele din urmă, soluția mea a fost să folosesc un dispozitiv android real pentru testare. –  > Por JPerk.
11 răspunsuri
RxRead

Am întâlnit și eu această problemă, reconectarea WiFi-ului poate rezolva problema.

Pentru noi ,putem verifica dacă telefonul poate rezolva host-ul la IP atunci când pornim aplicația. Dacă nu poate rezolva, spuneți utilizatorului să verifice WiFi-ul și apoi ieșiți.

Sper că vă ajută.

Comentarii

  • VĂ MULȚUMESC FOARTE MULT! Nu mi-am putut da seama de ce mă puteam conecta la adresă, dar nu o puteam accesa prin aplicația mea. O eroare stupidă de WiFi… –  > Por DemonGyro.
  • A trebuit să-mi închid telefonul ! –  > Por Francisco Corrales Morales.
  • Am petrecut mult timp încercând să-mi dau seama de ce aplicația mea nu mai funcționează… Dintre toate lucrurile care ar fi putut fi, acesta a fost. Mulțumesc!!! –  > Por thomaspsk.
  • Mai există această problemă în Android 7? Pot întâlni acest comportament aleatoriu la deschiderea aplicației. Conexiunea de rețea este disponibilă pentru aplicație, dar se conectează accesul la serviciile web. Ce ar putea cauza la acest lucru? Mai multe dispozitive din rețea au aceeași problemă. –  > Por X-HuMan.
  • Poate exista o modalitate de a da o alertă sau un toast utilizatorului, deoarece programatorii pot înțelege problema, dar utilizatorul nu o înțelege, el nu va veni pe stackoverflow, ci doar va dezinstala aplicația… – –  > Por DragonFire.
Jiyeh

Dacă reconectarea WiFi nu funcționează pentru tine, încearcă să repornești dispozitivul.

Acest lucru funcționează pentru mine. Sper că vă ajută.

CMash

Am avut aceeași excepție în simulator (Android Studio pe OSX), dar conectarea la aceeași adresă URL pe simulatorul iOS a funcționat bine… Se pare că totul a pornit de la faptul că aș fi rulat simulatorul în timp ce eram conectat la un hotspot personal pentru conexiunea mea la internet și apoi m-am întors mai târziu în timp ce eram conectat la wifi și simulatorul nu i-a plăcut noua conexiune la internet din anumite motive, se pare că a crezut că vechiul hotspot era conexiunea curentă, care nu mai funcționa…

Închiderea și relansarea simulatorului a funcționat!

adubey

Am primit aceeași eroare și problema a fost că eram pe VPN și nu mi-am dat seama. După ce m-am deconectat de la VPN și m-am reconectat la rețeaua mea WIFI, problema a fost rezolvată.

Comentarii

  • Această soluție a funcționat pentru mine cu Deconectarea VPN -.  > Por Abhijit Chakra.
Ajay Takur

Ați ratat configurarea etichetei în fișierul manifest

<uses-permission android_name="android.permission.ACCESS_NETWORK_STATE" />

A. Sullivan

Am întâlnit această eroare atunci când mi-am rulat aplicația Android pe WiFi-ul de acasă, apoi am încercat să o execut pe un alt WiFi fără să închid simulatorul.

Simpla închidere a simulatorului și relansarea aplicației a funcționat pentru mine!

Vettiyanakan

Am avut această problemă pe Android 10,

Schimbat targetSdkVersion 29 la targetSdkVersion 28 problemă rezolvată. Nu sunt sigur care este problema reală.

Cred că nu este o practică bună, dar a funcționat.

înainte:

compileSdkVersion 29

minSdkVersion 14

targetSdkVersion 29

Acum:

compileSdkVersion 29

minSdkVersion 14

targetSdkVersion 28

Comentarii

  • Soluția dvs. a funcționat pentru mine! Mulțumesc mult! Experimentat pe Samsung Galaxy M31 cu Android 10. –  > Por user2342558.
Hernán Daniel Piña Landinez

Îmi testam aplicația cu emulatorul Android și am rezolvat acest lucru prin oprirea și pornirea Wi-Fi pe dispozitivul emulator Android! A funcționat perfect.

Comentarii

  • Am făcut același lucru, doar că cu datele mobile. –  > Por Primož Ivančič.
Gabriel Guedes

Am avut aceeași problemă, dar cu Glide. Când am vrut să mă deconectez de la wifi și să mă reconectez (așa cum s-a sugerat aici), am observat că eram în modul Avion ♂️.

Ashandra Singh

Am avut aceeași problemă. java.net.UnknownHostException: Imposibil de rezolvat gazda „”…

Rulez Visual Studio 2019 și Xamarin.

De asemenea, am trecut din nou la WiFi-ul meu, dar a fost pe un hot spot.

Am rezolvat acest lucru prin ștergerea curată a emulatorului. Restaurați setările din fabrică. Apoi, re-executarea aplicației Visual Studio xamarin, care va redeploia din nou aplicația dvs. pe emulatorul proaspăt.

A funcționat. Am crezut că mă voi lupta zile întregi pentru a rezolva acest lucru. Din fericire, acest post m-a îndrumat în direcția corectă.

Nu am putut înțelege cum a funcționat perfect înainte și apoi s-a oprit fără nicio schimbare de cod.

Acesta este codul meu pentru referință:

using var response = await httpClient.GetAsync(sb.ToString());
string apiResponse = await response.Content.ReadAsStringAsync();

Boris Veriga

Am avut aceeași problemă, dar cu o mică diferență. Adăugasem NetworkConnectionCallback pentru a verifica situația în care conexiunea la internet s-a schimbat în timpul execuției și verificam astfel înainte de a trimite toate cererile:

private fun isConnected(): Boolean {
    val activeNetwork = cManager.activeNetworkInfo
    return activeNetwork != null && activeNetwork.isConnected
}

Poate exista o stare de tipul CONNECTING (puteți vedea că atunci când porniți wifi, pictograma începe să clipească, iar după conectarea la rețea, imaginea este statică).Așadar, avem două stări diferite: una CONNECT și alta CONNECTING, iar atunci când Retrofit a încercat să trimită o cerere, conexiunea la internet este dezactivată și aruncă UnknownHostException. Am uitat să adaug un alt tip de excepție în funcția care era responsabilă pentru trimiterea cererilor.

try{
//for example, retrofit call
}
catch (e: Exception) {
        is UnknownHostException -> "Unknown host!"
        is ConnectException -> "No internet!"
        else -> "Unknown exception!"
    }

Este doar un moment complicat care poate fi legat de această problemă.

Sper că voi ajuta pe cineva)