PDA

View Full Version : مهم - مشکل TimeoutError در کتابخانه vollay



hamedg1366
جمعه 30 تیر 1396, 14:21 عصر
با سلام


متاسفانه چند روزه با مشکل عجیبی هنگام استفاده از کتابخونه Vollay برخوردم.

بنده وقتی برنامه رو با WIFI اجرا میکنم همه چی اوکی کار میکنه اما وقتی از دیتای موبایل استفاده میکنم با خطای زیر مواجه میشم :


om.android.volley.TimeoutError



کمی سرچ گوگل منو با این رشته کد مواجه کرد اما متاسفانه تغییر زمان درخواست هم چاره مار نشد :



int socketTimeout = 30000; // 30 seconds. You can change it
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);

MyStringRequest.setRetryPolicy(policy);






با رشته کد زیر دنبال خطا گشتم :



@Override
public void onErrorResponse(VolleyError error) {
//This code is executed if there is an error.
/*Toast.makeText(getApplicationContext(),"مشکلی در دریافت اطلاعات وجود دارد",Toast.LENGTH_LONG).show();*/
String message = null;
if (error instanceof NetworkError) {
message = "Cannot connect to Internet...Please check your connection!";
} else if (error instanceof ServerError) {
message = "The server could not be found. Please try again after some time!!";
} else if (error instanceof AuthFailureError) {
message = "Cannot connect to Internet...Please check your connection!";
} else if (error instanceof ParseError) {
message = "Parsing error! Please try again after some time!!";
} else if (error instanceof NoConnectionError) {
message = "Cannot connect to Internet...Please check your connection2!";
} else if (error instanceof TimeoutError) {
message = "Connection TimeOut! Please check your internet connection3.";
}
Log.e("message=>>>>>>"," "+message);
}





که خروجی خطا رو به صورت زیر نشون میده :


07-21 15:07:37.133 10481-10481/com.a.app E/error=>>>>>>: com.android.volley.NoConnectionError: java.io.EOFException
07-21 15:07:37.133 10481-10481/com.a.app E/message=>>>>>>: Cannot connect to Internet...Please check your connection!
07-21 15:07:37.133 10481-10481/com.a.app E/error=>>>>>>: com.android.volley.NoConnectionError: java.io.EOFException
07-21 15:07:37.194 10481-10481/com.a.app E/message=>>>>>>: Cannot connect to Internet...Please check your connection!
07-21 15:07:37.195 10481-10481/com.a.app E/error=>>>>>>: com.android.volley.NoConnectionError: java.io.EOFException
07-21 15:07:37.195 10481-10481/com.a.app E/message=>>>>>>: Cannot connect to Internet...Please check your connection!





مطمینم ک اینترنت داره گوشی ؛ کلافم کرده ، نمیدونم دیگه چیکار میشه کرد .




ضمیمه، با این تیکه کدها هم اینترنت رو چک میکنم؛ (خروجی Log هم true هستش)



public static boolean isOnline(Context context) {
try {
boolean a=isOnline_Mob(context);
boolean b=wifiState(context);
if(a || b){
return isConnectingToInternet(context);
}else{
return false;
}
}catch (Exception e) {
Log.wtf("Exception e=>", " "+e);
return false;
}
}




و



public static boolean isOnline_Mob(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERV ICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return (netInfo != null && netInfo.isConnected());
}




و



public static boolean isConnectingToInternet(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERV ICE);
if (connectivity != null) {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
Log.e("true=>", "trrue");
return true;
}

}
Log.e("false=>", "false");
return false;
}

spiderman200700
شنبه 31 تیر 1396, 11:45 صبح
از این کد برای استفاده از انترنت وای فای استفاده کن. شاید درست بشه:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {


ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERV ICE);


for (Network net : connectivityManager.getAllNetworks()) {


NetworkInfo networkInfo = connectivityManager.getNetworkInfo(net);


if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
connectivityManager.bindProcessToNetwork(net);
break;
}
}
}

hamedg1366
شنبه 31 تیر 1396, 14:45 عصر
با تشکر از شما امتحان کردم اما همچنان مشکلم پا برجاست .


:عصبانی++:

hamedg1366
یک شنبه 01 مرداد 1396, 00:28 صبح
دوستان چی کار میشه کرد ؟

اصلا چطور ممکنه url درست باشه ، کدها درست باشن توی wifi اما فقط هنگام استفاده از نت گوشی به مشکل برخورد ، ( تا همین چند روز پیش همین هم کار میکرد)

ممنون میشم برای هر نوع کمکی ...

hamedg1366
یک شنبه 01 مرداد 1396, 09:25 صبح
یه پروژه تستی ایجاد کردم و کل فرامین رو از اول زدم با یه url ک از نت پیدا کردم و بدون مشکل run شدش اما وقتی url وب سرویس خودم رو میدم بهش همون خطای timeout رو میده ، در حالی ک url وب سرویس خودم خروجی رو روس مرورگر چاپ میکنه ،


حالا ک مشکل از آدرس شد ، از دوستان ک در زمینه وب هم دستی دارن لطفا نظر بدن دلیل چی میتونه باشه ؟ آیا وب سرویس فایروالی چیزی داره ک باعث شده ریکوئست به برنامه با vollay نرسه ؟؟!!