我正试图用Volley打一场休息服务。
public class AuthFunctions {
private static final String LOGIN_URL = "http://10.0.2.2:8080/stewayservices/user-management/users/10";
boolean result;
public boolean loginUser(String email,String password){
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET,LOGIN_URL,null,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("JsonObject Response",response.toString());
try {
JSONObject user = response.getJSONObject("user");
String firstName = user.getString("firstName");
if (firstName.equals("Lokesh")){
result = true;
}
else{
result = false;
}
} catch (JSONException e) {
Log.d("Web Service Error",e.getMessage());
e.printStackTrace();
}
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Log.d("JsonObject Error Response",volleyError.toString());
}
});
request.setRetryPolicy(new DefaultRetryPolicy(500000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
AppController.getInstance().addToRequestQueue(request);
return result;
}
}
但是它给了我Volley Timeout错误。下面是Logcat
D/JsonObject Error Response﹕ com.android.volley.TimeoutError
如果我做错了,请告诉我。这是关于Android的stackoverflow中的第一个问题。
答案 0 :(得分:27)
这对我有用:
request.setRetryPolicy(new RetryPolicy() {
@Override
public int getCurrentTimeout() {
return 50000;
}
@Override
public int getCurrentRetryCount() {
return 50000;
}
@Override
public void retry(VolleyError error) throws VolleyError {
}
});
你可以改变那个时间。
答案 1 :(得分:9)
com.android.volley.TimeoutError
在75%的情况下,由于连接问题而发生此错误 &#39;
如果您在localhost或本地服务器上进行测试
检查防火墙是否已关闭
答案 2 :(得分:3)
String url = "https://api.joind.in/v2.1/events?start=" + start + "&resultsperpage=20&format=json";
Log.i("DREG", "onLoadMoreItems: " + url);
final StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Add Code Here
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (error instanceof NetworkError) {
} else if (error instanceof ServerError) {
} else if (error instanceof AuthFailureError) {
} else if (error instanceof ParseError) {
} else if (error instanceof NoConnectionError) {
} else if (error instanceof TimeoutError) {
Toast.makeText(getContext(),
"Oops. Timeout error!",
Toast.LENGTH_LONG).show();
}
}
}
);
stringRequest.setRetryPolicy(new DefaultRetryPolicy(
10000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
requestQueue.add(stringRequest);
答案 3 :(得分:3)
public void onErrorResponse(VolleyError error) {
if (error instanceof NetworkError) {
} else if (error instanceof ServerError) {
} else if (error instanceof AuthFailureError) {
} else if (error instanceof ParseError) {
} else if (error instanceof NoConnectionError) {
} else if (error instanceof TimeoutError) {
Toast.makeText(getContext(),
"Oops. Timeout error!",
Toast.LENGTH_LONG).show();
}
答案 4 :(得分:2)
在错误侦听器之后添加以下内容
myRequest.setRetryPolicy(new DefaultRetryPolicy(
MY_SOCKET_TIMEOUT_MS,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
答案 5 :(得分:1)
1)的连通性。 2)网址无效。
尝试在模拟器上运行它。它应该在模拟器上运行,因为emualator在同一台机器上运行,并且与运行的wamp具有相同的ip。
要使其在真实设备上运行,请将设备连接到运行wampserver的同一WLAN。如果未连接到同一WLAN,则必须将php脚本托管到Web。要做到这一点,有很多免费的网站托管网站,如https://www.000webhost.com/,可以查看它们。
希望这有帮助!
答案 6 :(得分:1)
在Macbook上,我正在运行一个用python3.X编写的Django应用程序。
我必须执行以下操作。
答案 7 :(得分:1)
stringRequest.setRetryPolicy(new DefaultRetryPolicy(
6000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)
);
答案 8 :(得分:0)
检查URL中的IPv4地址是否正确,并且未更改。
答案 9 :(得分:0)
我也遇到了同样的情况,因为我没有启动Xampp。我想可能是一样的。
答案 10 :(得分:0)
5岁的问题很难解决今天的问题。
Volley将不再接受http和ip地址。将仅接受带有fqdn的https。
答案 11 :(得分:0)
使用这样的重试策略
request.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 2, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
requestQueue.add(request);
答案 12 :(得分:-3)
这件事发生在我身上。我确定是因为我没有在XAMPP中启动Apache和MySQL。