web-dev-qa-db-ja.com

java.net.UnknownHostException:ホスト "<url>"を解決できません:ホスト名に関連付けられたアドレスがなく、文字0の入力の終わり

Webサービスから質問を読み込むアプリを作成しましたが、問題なく機能します。しかし、時々クラッシュし、これが発生する理由がわかりません。特に、必要なアクセス許可も与えているためです。正常に動作しますが、ランダムにクラッシュし、このレポートが表示されます。

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)
52
Reshma

私もこの問題に遭遇しました。WiFiを再接続するとこれを解決できます。

私たちにとって、アプリケーションを開始するときに、電話がホストをIPに解決できるかどうかを確認できます。解決できない場合は、WiFiを確認して終了するようユーザーに伝えます。

役に立てば幸いです。

162
RxRead

シミュレーター(OSX上のAndroid Studio)でも同じ例外がありましたが、iOSシミュレーターで同じURLに接続するとうまくいきました...個人用ホットスポットに接続しながらシミュレーターを実行するという事実に起因するようです私のインターネット接続のために、Wi-Fiに接続しているときに後で戻ってきたので、シミュレータは何らかの理由で新しいインターネット接続を好まなかったため、古いホットスポットが現在の接続であり、もはや機能していなかったようです。

シミュレーターを閉じて再起動するとうまくいきました!

11
CMash

WiFiの再接続がうまくいかない場合は、デバイスを再起動してください。

これは私のために動作します。それが役に立てば幸い。

9
Jiyeh

私は同じエラーを受け取りました、そして、問題は私がVPNにいて、それを理解しなかったことでした。 VPNから切断してWIFIネットワークに再接続すると、問題は解決しました。

5
adubey

マニフェストファイルでタグを設定できませんでした

<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
4
Ajay Takur

自宅のWiFiでAndroidアプリを実行していて、シミュレーターを閉じずに別のWiFiで実行しようとすると、このエラーが発生しました。

シミュレータを閉じてアプリを再起動するだけでうまくいきました!

2
A. Sullivan

Androidエミュレーターでアプリケーションをテストしていましたが、AndroidエミュレーターデバイスのWi-Fiをオフにしてからオンにすることでこれを解決しました。完璧に機能しました。