无法解析主机“ < url >”: 没有与主机名关联的地址,输入结束位于

我已经创建了一个应用程序,从我的网络服务加载一个问题,它工作得很好。但是,有时它会崩溃,我不知道为什么会发生这种情况,特别是因为我已经给了它所需的权限。它工作得很好,但是随机的,它崩溃了,然后给了我这个报告。

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)
219988 次浏览

我也遇到了这个问题,重新连接 WiFi 可以解决这个问题。

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.

希望能有所帮助。

我得到了同样的错误和问题是,我是在 VPN 和我没有意识到这一点。从 VPN 中断连接并重新连接到我的 WIFI 网络后,问题得到了解决。

未能在清单文件中配置标记

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

我在模拟器(OSX 上的 Android Studio)上也有同样的例外,但是在 iOS 模拟器上连接相同的 URL 工作得很好... ... 看起来这一切都源于这样一个事实: 我在运行模拟器的时候,连接到了一个个人热点来连接我的互联网,然后在连接到 wifi 的时候又回来了,模拟器由于某种原因不喜欢新的互联网连接,似乎它认为旧的热点是当前的连接,现在已经不工作了。.

关闭和重新启动模拟器工作!

如果重新连接无线网络对你不起作用,尝试重新启动你的设备。

这对我有用,希望能有帮助。

当我在家里的 WiFi 上运行我的 Android 应用程序,然后试图在不关闭模拟器的情况下在不同的 WiFi 上运行它时,我遇到了这个错误。

简单地关闭模拟器和重新启动应用程序为我工作!

我正在用 Android 模拟器测试我的应用程序,我通过关闭和打开 Android 模拟器设备上的 Wi-Fi 来解决这个问题!效果很好。

我也有同样的问题。 异常: 无法解析主机“”..。

我在运行 Visual Studio 2019和 Xamarin。

我也切换回我的无线网络,但在一个热点。

我干净利落地刷了下模拟器就解决了这个问题。还原到工厂设置。然后重新运行可视化工作室 xamarin 应用程序,它将重新部署您的应用程序到新的模拟器。

成功了。我以为我会为了解决这个问题奋斗好几天。幸运的是,这篇文章为我指明了正确的方向。

我不能理解它之前是如何完美工作的,然后没有代码更改就停止了。

这是我的参考代码:

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

我也有同样的问题,但是格莱德。当我要断开 wifi 重新连接(就像这里建议的那样)时,我注意到自己处于飞机模式‍♂

我在安卓10上有个问题,

targetSdkVersion 29改为 targetSdkVersion 28问题解决。不确定实际问题是什么。

我认为这不是一个好的做法,但它工作。

以前:

compileSdkVersion 29

minSdkVersion 14

targetSdkVersion 29

Now:

compileSdkVersion 29

minSdkVersion 14

targetSdkVersion 28

我也有同样的问题,只是差别不大。我添加了 NetworkConnectionCallback 来检查运行时互联网连接发生变化的情况,并在发送所有请求之前进行如下检查:

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

可以有状态如 CONNECTING (你可以看到 i 当你打开 wifi,图标开始闪烁,连接到网络后,图像是静态的)。 因此,我们有两种不同的状态: 一种是 CONNECT 另一种是 CONNECTING,并且当 Requfit 尝试发送请求 Internet 连接时禁用并且抛出 Unknown HostException。 我忘记在函数中添加另一种类型的异常,它负责发送请求。

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

这只是一个棘手的时刻,可以通过与这个问题相关。

霍普,我会帮助别人的)

我遇到了这个问题 我所做的解决方案是重启我的机器人设备或模拟器。 it solved the issue for me.