java.net.UnknownHostException :“<url>”호스트를 확인할 수 없음 : 호스트 이름과 연결된 주소가 없으며 문자 0에서 입력 끝


84

내 웹 서비스에서 질문을로드하는 앱을 만들었는데 제대로 작동합니다. 그러나 때로는 충돌이 발생하고 특히 필요한 권한을 부여했기 때문에 이것이 발생하는 이유를 알 수 없습니다. 잘 작동하지만 무작위로 충돌하고이 보고서를 제공합니다.

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)

15
인터넷에 연결되어 있습니까?
Apoorv 2013

로그에 응답이 인쇄됩니까?
GrIsHu 2013

예, 인터넷 연결을 확인했습니다.
Reshma 2013

1
전화가이 URL에 액세스 할 수 있는지 확인 (예 : 브라우저에서)

시뮬레이터로 시도하지 마십시오. 동일한 문제가 발생했습니다. 그리고 나는 그것을 알아 내려고 하루를 보냈습니다. 마지막으로 내 솔루션은 테스트를 위해 실제 안드로이드 장치를 사용하는 것이 었습니다.
JPerk

답변:


224

이 문제도 발생했습니다. WiFi를 다시 연결하면이 문제를 해결할 수 있습니다.

우리는 응용 프로그램을 시작할 때 전화가 호스트를 IP로 확인할 수 있는지 확인할 수 있습니다. 문제가 해결되지 않으면 사용자에게 WiFi를 확인한 다음 종료하라고 안내합니다.

도움이 되었기를 바랍니다.


정말 고마워요! 주소에 연결할 수 있지만 앱을 통해 액세스 할 수없는 이유를 알 수 없습니다. Stupid WiFi bug ...
DemonGyro 2014 년

나는 내 전화를 꺼야했다!
Francisco Corrales Morales

내 앱이 더 이상 작동하지 않는 이유를 파악하는 데 오랜 시간을 보냈습니다. 감사합니다!!
thomaspsk

4
이 문제가 Android 7에 여전히 존재합니까? 이 동작은 응용 프로그램을 열 때 무작위로 발생할 수 있습니다. 네트워크 연결은 응용 프로그램에 사용할 수 있지만 웹 서비스에 대한 액세스를 연결합니다. 이것의 원인은 무엇입니까? 네트워크의 여러 장치에 동일한 문제가 있습니다.
X-HuMan

프로그래머가 문제를 이해할 수 있지만 사용자가 stackoverflow에 오지 않을 것이므로 사용자에게 경고 또는 알림을 제공 할 수있는 방법이있을 수 있습니다.
DragonFire

20

WiFi를 다시 연결해도 작동하지 않으면 장치를 재부팅하십시오.

이것은 나를 위해 작동합니다. 도움이 되었기를 바랍니다.


16

시뮬레이터 (OSX의 Android Studio)에서 동일한 예외가 있었지만 iOS 시뮬레이터에서 동일한 URL에 연결하면 정상적으로 작동했습니다. 개인용 핫스팟에 연결되어있는 동안 시뮬레이터를 실행한다는 사실에서 비롯된 것 같습니다. 내 인터넷 연결을 위해 나중에 Wi-Fi에 연결된 상태로 돌아 왔고 시뮬레이터는 어떤 이유로 새로운 인터넷 연결이 마음에 들지 않았습니다. 이전 핫스팟이 더 이상 작동하지 않는 현재 연결이라고 생각한 것 같습니다 ..

시뮬레이터를 닫고 다시 시작했습니다!


9

나는 동일한 오류가 발생했고 문제는 내가 VPN에 있었고 그것을 깨닫지 못했다는 것입니다. VPN 연결을 끊고 WIFI 네트워크에 다시 연결 한 후 문제가 해결되었습니다.


5

매니페스트 파일에서 태그를 구성하지 못했습니다.

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

4

홈 WiFi에서 Android 앱을 실행 한 다음 시뮬레이터를 닫지 않고 다른 WiFi에서 실행하려고 할 때이 오류가 발생했습니다.

시뮬레이터를 닫고 앱을 다시 시작하는 것만으로도 효과적이었습니다!


2

Android 10에서이 문제가 발생했습니다.

해결 된 문제로 변경 targetSdkVersion 29되었습니다 targetSdkVersion 28. 실제 문제가 무엇인지 확실하지 않습니다.

좋은 습관이 아니라고 생각하지만 효과가있었습니다.

전에:

compileSdkVersion 29

minSdkVersion 14

targetSdkVersion 29

지금:

compileSdkVersion 29

minSdkVersion 14

targetSdkVersion 28



1

나는 같은 문제가 있었지만 Glide를 사용했습니다. Wi-Fi 연결을 끊고 다시 연결하려고 할 때 (여기에서 제안한 것처럼) 비행기 모드에 있다는 것을 알았습니다 🤦‍♂️


0

나는 같은 문제가 있었다. java.net.UnknownHostException :“”호스트를 확인할 수 없습니다 ...

Visual Studio 2019 및 Xamarin을 실행하고 있습니다.

또한 WiFi로 다시 전환했지만 핫스팟에있었습니다.

에뮬레이터를 깨끗이 스 와이프하여이 문제를 해결했습니다. 공장 설정으로 복원합니다. 그런 다음 앱을 새로운 에뮬레이터에 다시 배포 할 Visual Studio xamarin 앱을 다시 실행합니다.

효과가있었습니다. 나는 이것을 해결하기 위해 며칠 동안 싸울 것이라고 생각했다. 다행히이 게시물은 저를 올바른 방향으로 안내했습니다.

나는 그것이 어떻게 완벽하게 작동했는지 이해할 수 없었고 코드 변경없이 중단되었습니다.

이것은 참조 용 코드입니다.

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

0

나는 같은 문제가 있었지만 작은 차이가 있습니다. 런타임에 인터넷 연결이 변경된 상황을 확인하기 위해 NetworkConnectionCallback을 추가하고 모든 요청을 보내기 전에 다음과 같이 확인했습니다.

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

CONNECTING과 같은 상태가있을 수 있습니다 (WiFi를 켜면 아이콘이 깜박이기 시작하고 네트워크에 연결 한 후 이미지가 고정되어 있음을 알 수 있습니다). 따라서 두 가지 상태가 있습니다. 하나는 CONNECT 다른 CONNECTING이고 Retrofit이 요청을 보내려고 할 때 인터넷 연결이 비활성화되고 UnknownHostException이 발생합니다. 요청을 보내는 기능에 다른 유형의 예외를 추가하는 것을 잊었습니다.

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

이 문제와 관련 될 수있는 까다로운 순간입니다.

희망, 내가 누군가를 도울 것입니다)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.