的java.net.UnknownHostException:无法解析主机"<网址>&QUOT:无与主机名和输入端的字符0相关地址字符、主机名、主机、地址

2023-09-04 05:39:05 作者:金逼镶钻一炮八万!

我已经创建了一个应用程序,从我的web服务加载的问题,并能正常工作。但是,有时候它崩溃,我不知道为什么这种情况正在发生,特别是因为我也给它所需权限的原因。它工作正常,但随机的,它崩溃,给我这个reprot。

我需要紧急援助。请提出宝贵的东西。

 私人无效sendContinentQuestions(INT ID){
    // TODO自动生成方法存根

    //获取数据(见上文)
    JSONArray JSON = getJSONfromURL(ID);
        尝试{
            的for(int i = 0; I< json.length();我++){
                HashMap的<字符串,字符串>图=新的HashMap<字符串,字符串>();
                的JSONObject jObject = json.getJSONObject(ⅰ);
                经度:72.5660200
                字符串CATEGORY_ID = jObject.getString(CATEGORY_ID);
                串question_id = jObject.getString(question_id);
                串question_name = jObject.getString(question_name);
                字符串纬度= jObject.getString(纬);
                串经度= jObject.getString(经度);
                字符串的答案= jObject.getString(答案);
                字符串ansLatLng =纬度+|+经度;
                Log.v(##数据:: ###,question_id + - + question_name + - 猫ID  - + CATEGORY_ID + -  ansLatLng+ ansLatLng +的回答:+答案);

                all_question.add(新QuestionData(game_id,CATEGORY_ID,question_id,question_name,ansLatLng,接听));
            }
        }赶上(JSONException E){
            Log.e(log_tag,错误分析数据+ e.toString());
        }
    }


}
 公共JSONArray getJSONfromURL(INT ID){

    串响应=;
    URL网址;
    尝试 {
        URL =新的URL(Consts.GET_URL +的index.php / API / getQuestion cat_id =?+ ID);
        HttpURLConnection的HTTP =(HttpURLConnection类)url.openConnection();
        http.setRequestMethod(POST);
        InputStream的是= http.getInputStream();
        的BufferedReader BR =新的BufferedReader(新InputStreamReader的(是));
        响应= br.readLine();
        Log.v(###回应:: ###,响应);
        http.disconnect();
    }赶上(MalformedURLException异常E){
        // TODO自动生成的catch块
        e.printStackTrace();
    }赶上(的ProtocolException E){
        // TODO自动生成的catch块
        e.printStackTrace();
    }赶上(IOException异常E){
        // TODO自动生成的catch块
        e.printStackTrace();
    }
    //尝试解析字符串到一个JSON对象
    JSONArray jArray = NULL;
    尝试{

        jArray =新JSONArray(响应);

    }赶上(JSONException E){
        Log.e(log_tag,错误分析数据+ e.toString());
    }

    返回jArray;
}
 

  11-13 15:02:52.307:W / System.err的(8012):的java.net.UnknownHostException:无法解析主机www.xyz.com:无地址与主机名相关
11-13 15:02:52.317:W / System.err的(8012):在java.net.InetAddress.lookupHostByName(InetAddress.java:424)
11-13 15:02:52.317:W / System.err的(8012):在java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
11-13 15:02:52.317:W / System.err的(8012):在java.net.InetAddress.getAllByName(InetAddress.java:214)
11-13 15:02:52.317:W / System.err的(8012):在libcore.net.http.HttpConnection< INIT>(HttpConnection.java:70)
11-13 15:02:52.317:W / System.err的(8012):在libcore.net.http.HttpConnection< INIT>(HttpConnection.java:50)
11-13 15:02:52.317:W / System.err的(8012):在libcore.net.http.HttpConnection $ Address.connect(HttpConnection.java:340)
11-13 15:02:52.317:W / System.err的(8012):在libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
11-13 15:02:52.317:W / System.err的(8012):在libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
11-13 15:02:52.317:W / System.err的(8012):在libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
11-13 15:02:52.317:W / System.err的(8012):在libcore.net.http.HttpEngine.connect(HttpEngine.java:311)
11-13 15:02:52.317:W / System.err的(8012):在libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
11-13 15:02:52.317:W / System.err的(8012):在libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
11-13 15:02:52.317:W / System.err的(8012):在libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:282)
11-13 15:02:52.317:W / System.err的(8012):在libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
11-13 15:02:52.327:W / System.err的(8012):在com.abc.xyz.ContinentActivity.getJSONfromURL(ContinentActivity.java:400)
11-13 15:02:52.327:W / System.err的(8012):在com.abc.xyz.ContinentActivity.sendContinentQuestions(ContinentActivity.java:327)
11-13 15:02:52.327:W / System.err的(8012):在com.abc.xyz.ContinentActivity.access $ 2(ContinentActivity.java:323)
11-13 15:02:52.327:W / System.err的(8012):在com.abc.xyz.ContinentActivity $ LoadQuestions.doInBackground(ContinentActivity.java:254)
11-13 15:02:52.327:W / System.err的(8012):在com.abc.xyz.ContinentActivity $ LoadQuestions.doInBackground(ContinentActivity.java:1)
11-13 15:02:52.327:W / System.err的(8012):在android.os.AsyncTask $ 2.call(AsyncTask.java:287)
11-13 15:02:52.327:W / System.err的(8012):在java.util.concurrent.FutureTask.run(FutureTask.java:234)
11-13 15:02:52.327:W / System.err的(8012):在android.os.AsyncTask $ SerialExecutor $ 1.运行(AsyncTask.java:230)
11-13 15:02:52.327:W / System.err的(8012):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
11-13 15:02:52.337:W / System.err的(8012):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:573)
11-13 15:02:52.337:W / System.err的(8012):在java.lang.Thread.run(Thread.java:841)
11-13 15:02:52.337:W / System.err的(8012):libcore.io.GaiException:产生的原因的getaddrinfo失败:EAI_NODATA(不与主机名关联的地址)
11-13 15:02:52.337:W / System.err的(8012):在libcore.io.Posix.getaddrinfo(本机方法)
11-13 15:02:52.337:W / System.err的(8012):在libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:61)
11-13 15:02:52.337:W / System.err的(8012):在java.net.InetAddress.lookupHostByName(InetAddress.java:405)
11-13 15:02:52.337:W / System.err的(8012):24 ...更多
11-13 15:02:52.337:E / log_tag(8012):错误分析数据org.json.JSONException:输入的字符0结束
11-13 15:02:52.337:W / dalvikvm(8012):主题ID = 194:线程退出与未捕获的异常(组= 0x417c1700)
11-13 15:02:52.337:E / AndroidRuntime(8012):致命异常:AsyncTask的#5
11-13 15:02:52.337:E / AndroidRuntime(8012):java.lang.RuntimeException的:一个错误而执行doInBackground发生()
11-13 15:02:52.337:E / AndroidRuntime(8012):在android.os.AsyncTask $ 3.done(AsyncTask.java:299)
11-13 15:02:52.337:E / AndroidRuntime(8012):在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
11-13 15:02:52.337:E / AndroidRuntime(8012):在java.util.concurrent.FutureTask.setException(FutureTask.java:219)
11-13 15:02:52.337:E / AndroidRuntime(8012):在java.util.concurrent.FutureTask.run(FutureTask.java:239)
11-13 15:02:52.337:E / AndroidRuntime(8012):在android.os.AsyncTask $ SerialExecutor $ 1.运行(AsyncTask.java:230)
11-13 15:02:52.337:E / AndroidRuntime(8012):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
11-13 15:02:52.337:E / AndroidRuntime(8012):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:573)
11-13 15:02:52.337:E / AndroidRuntime(8012):在java.lang.Thread.run(Thread.java:841)
11-13 15:02:52.337:E / AndroidRuntime(8012):由:显示java.lang.NullPointerException
11-13 15:02:52.337:E / AndroidRuntime(8012):在com.abc.xyz.ContinentActivity.sendContinentQuestions(ContinentActivity.java:328)
11-13 15:02:52.337:E / AndroidRuntime(8012):在com.abc.xyz.ContinentActivity.access $ 2(ContinentActivity.java:323)
11-13 15:02:52.337:E / AndroidRuntime(8012):在com.abc.xyz.ContinentActivity $ LoadQuestions.doInBackground(ContinentActivity.java:254)
11-13 15:02:52.337:E / AndroidRuntime(8012):在com.abc.xyz.ContinentActivity $ LoadQuestions.doInBackground(ContinentActivity.java:1)
11-13 15:02:52.337:E / AndroidRuntime(8012):在android.os.AsyncTask $ 2.call(AsyncTask.java:287)
11-13 15:02:52.337:E / AndroidRuntime(8012):在java.util.concurrent.FutureTask.run(FutureTask.java:234)
 

解决方案

我遇到了这个问题太,重新连接的无线网络可以解决这个问题。

对于我们来说,我们可以检查,如果手机可以解析主机IP当我们开始应用。如果它不能解析,告诉用户检查的WiFi,然后退出。

我希望它能帮助。

重磅 力软 JAVA 开发平台将于7月20日正式上线

I've created an app that loads a question from my web services, and it works fine. But, sometimes it crashes and I do not get the reason why this is happening, especially because I have also given it the required permissions. It works fine, but at random, it crashes and gives me this reprot.

I need urgent help. Please suggest something.

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)

解决方案

I encountered this problem too, reconnecting the WiFi can solve this.

For us ,we can check if the phone can resolve the host to IP when we start application. If it cannot resolve, tell the user to check the WiFi and then exit.

I hope it helps.