我必须与Volly进行一些网络操作。我收到com.android.volley.NoConnectionError:java.net.UnknownHostException以下代码。
String url="https://www.user.url.in"
JsonObjectRequest medStats = new JsonObjectRequest(Request.Method.PUT, url, object,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
Boolean success = response.getBoolean("success");
System.out.println("On Success" + success);
// Toast.makeText(getApplicationContext(),""+success,Toast.LENGTH_SHORT).show();
//String message=response.getString("message");
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(context, "Error from server : " + error.toString(), Toast.LENGTH_LONG).show();
Toast.makeText(context,Boolean.toString(isNetworkAvailable()),Toast.LENGTH_LONG).show();
String message = null;
if (error instanceof NetworkError) {
message = "Cannot connect to Internet...Please check your connection!";
Toast.makeText(context,message,Toast.LENGTH_LONG).show();
} else if (error instanceof ServerError) {
message = "The server could not be found. Please try again after some time!!";
Toast.makeText(context,message,Toast.LENGTH_LONG).show();
} else if (error instanceof AuthFailureError) {
message = "Authentication Error!!";
Toast.makeText(context,message,Toast.LENGTH_LONG).show();
} else if (error instanceof ParseError) {
message = "Parsing error! Please try again after some time!!";
Toast.makeText(context,message,Toast.LENGTH_LONG).show();
} else if (error instanceof NoConnectionError) {
message = "Communication Error!!";
Toast.makeText(context,message,Toast.LENGTH_LONG).show();
} else if (error instanceof TimeoutError) {
message = "Connection TimeOut! Please check your internet connection.";
Toast.makeText(context,message,Toast.LENGTH_LONG).show();
}
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json; charset=utf-8");
headers.put("x-access-token", token);
return headers;
}
};
requestQueue.add(medStats);
我的尝试:
检查清单文件: - 1。
已添加
Logcat详细信息:
10-01 23:20:33.913 18856-18856/user.com.test2 W/System.err: com.android.volley.NoConnectionError: java.net.UnknownHostException: Unable to resolve host "www.user.url.in": No address associated with hostname
10-01 23:20:33.913 18856-18856/user.com.test2 W/System.err: at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:151)
10-01 23:20:33.913 18856-18856/user.com.test2 W/System.err: at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)
10-01 23:20:33.914 18856-18856/user.com.test2 W/System.err: Caused by: java.net.UnknownHostException: Unable to resolve host "www.user.url.in": No address associated with hostname
10-01 23:20:33.914 18856-18856/user.com.test2 W/System.err: at java.net.InetAddress.lookupHostByName(InetAddress.java:470)
10-01 23:20:33.914 18856-18856/user.com.test2 W/System.err: at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
10-01 23:20:33.915 18856-18856/user.com.test2 W/System.err: at java.net.InetAddress.getAllByName(InetAddress.java:215)
10-01 23:20:33.915 18856-18856/user.com.test2 W/System.err: at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
10-01 23:20:33.915 18856-18856/user.com.test2 W/System.err: at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188)
10-01 23:20:33.915 18856-18856/user.com.test2 W/System.err: at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157)
10-01 23:20:33.915 18856-18856/user.com.test2 W/System.err: at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100)
10-01 23:20:33.915 18856-18856/user.com.test2 W/System.err: at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357)
10-01 23:20:33.915 18856-18856/user.com.test2 W/System.err: at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340)
10-01 23:20:33.915 18856-18856/user.com.test2 W/System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
10-01 23:20:33.915 18856-18856/user.com.test2 W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
10-01 23:20:33.915 18856-18856/user.com.test2 W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)
10-01 23:20:33.916 18856-18856/user.com.test2 W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114)
10-01 23:20:33.916 18856-18856/user.com.test2 W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:245)
10-01 23:20:33.916 18856-18856/user.com.test2 W/System.err: at com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:264)
10-01 23:20:33.916 18856-18856/user.com.test2 W/System.err: at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:234)
10-01 23:20:33.916 18856-18856/user.com.test2 W/System.err: at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:107)
10-01 23:20:33.919 18856-18856/user.com.test2 W/System.err: at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96)
10-01 23:20:33.919 18856-18856/user.com.test2 W/System.err: ... 1 more
10-01 23:20:33.919 18856-18856/user.com.test2 W/System.err: Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
10-01 23:20:33.919 18856-18856/user.com.test2 W/System.err: at libcore.io.Posix.android_getaddrinfo(Native Method)
10-01 23:20:33.920 18856-18856/user.com.test2 W/System.err: at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
10-01 23:20:33.920 18856-18856/user.com.test2 W/System.err: at java.net.InetAddress.lookupHostByName(InetAddress.java:451)
10-01 23:20:33.920 18856-18856/user.com.test2 W/System.err: ... 18 more
答案 0 :(得分:0)
我得到了解决方案。在使用凌空时处理子域时。不要使用www。 所以正确的格式是String url =“http://user.url.in
答案 1 :(得分:0)
如果Android Volley发布请求因网络丢失而失败,Android Volley会在网络连接自动恢复后重试帖子吗? 不,它不会。根据您的申请,我可能根本不需要。
是否会触发所有请求尝试,等待连接重新建立或只是触发错误并停止? 它只是抛出一个错误。是的,你应该自己写这种逻辑。
答案 2 :(得分:0)
setRetryPolicy()也增加了timeOut和Retry计数。希望对您有所帮助。