مشکل شما بخاطر این هست که بجای Student از ArrayList استفاده کردید . (با ستاره مشخص کردم)
پوریا شفیعی۱۳ آذر ۱۴۰۰، ۱۵:۳۲
اقا پوریا ممنون میشم اگه میتونید با anydesk هم میتونید نگاه کنید حتی به نسخه gson 2.8.6 گیر میداد به نسخه 2.8.9 ارتقا دادم ولی بخدا از پروژه میاد بیرون.
هرچی هم میخوام عکس بفرستم یا فایل zip خطا میده که دسترسی برای اپلود فایل ندارم
محمد لطفی۱۳ آذر ۱۴۰۰، ۱۶:۰۳
.....................
محمد لطفی۱۳ آذر ۱۴۰۰، ۱۶:۰۴
اقا پوریا شرمنده امکان داره بخاطر سرعت اینترنت خوب ایران باشه چون الان retrofit رو هم انجام دادم ولی بازم مثل قبل میاد بیرون با دیباگ هم اروری که بهم میده
java.net.SocketTimeoutException: failed to connect to expertdevelopers.ir/185.94.99.234 (port 80) from /10.0.2.16 (port 54524) after 10000ms
اینه
محمد لطفی۱۳ آذر ۱۴۰۰، ۱۹:۲۷
سلام مجدد محمد جان
بله همینطوره متاسفانه بخاطر سرعت اینترنت هست:( چون تایم اوت هم داده
پیشنهاد میکنم از اینترنت گوشی به جای وای فای استفاده کنید و از وی پی ان windscribe استفاده کنید .
پوریا شفیعی۱۴ آذر ۱۴۰۰، ۱۴:۴۱
متاسفانه اینکارو کردوم ولی بازم از پروژه میاد بیرون و الان خطای سرعت کمه اینترنت رو نمیده
محمد لطفی۱۴ آذر ۱۴۰۰، ۱۴:۴۲
ارور مربوطه رو ارسال کنین
پوریا شفیعی۱۴ آذر ۱۴۰۰، ۱۵:۰۸
پروژه استاد رو دانلود کردم دقیقا همون رو اجرا کردم respone رو میگیره ولی موقع callback میاد بیرون و هیچ اروری هم نشون نمیده
میتونید با anydesk نگاه کنید. 990951248 اینم کدش
محمد لطفی۱۴ آذر ۱۴۰۰، ۱۵:۲۳
محمد لطفی۱۴ آذر ۱۴۰۰، ۱۵:۲۵
دقیقا منم یه هفته اس با این خط کد مشکل دارم
List<Student> students=gson.fromJson(response,
new TypeToken<Student>>(){}.getType());
من قبلا این پروژه رو نوشتم . مجدد که به سرفصل معماری MVVMرسیدم و نیاز به این پروژه دارم از ابتدا شروع به نوشتن کردم .تو متد Getدر والی و رتروفیت تو اینجا مشکل داره
من اینترنت هم فیبر نوریه لطفا راهنمایی کنید
راضیه نجفی۱۵ آذر ۱۴۰۰، ۰۵:۵۶
سلام وقت بخیر دوستان
متاسفانه 3 تا از دوستان این مشکل رو داشتند
این موضوع رو به استاد انتقال میدم احتمال زیاد مشکل از سمت سرور هست .
پوریا شفیعی۱۶ آذر ۱۴۰۰، ۰۸:۵۱
فک نکنم از سمت سرور باشه چون من لیست student هارو میگیرم. فقط اپ کرش میکنه میاد بیرون.
محمد لطفی۱۶ آذر ۱۴۰۰، ۰۹:۰۸
جدا؟ من فکر کردم دریافت نمیکنید ! چون در سوالتون هم گفتید لیست دانشجویان برگردانده نمیشه و ارور timeout ارسال کرده بودید
پس از اونجایی که 3 نفر چنین مشکلی رو داشتند احتمالا مشکل از ورژن لایبرری هست
لایبرری رو به این ورژن تغییر بدید
این نکته رو بگم ما در ادامه از لایبرری volley استفاده نخواهیم کرد و بجای اون از لایبرری retrofit استفاده خواهیم کرد چرا که با سایر لایبرری هایی که در ادامه یاد میگیرید سازگار هست و شرکتها از retrofit استفاده میکنند.
همچنین چک کنید دسترستی اینترنت به اپلیکیشن در منیفست داده باشید
و همینطور مورد زیر رو به منیفست برنامه اضافه کرده باشید که به ssl گیر نده (چون api موجود ssl نیست و از اندروید 8 به بعد اگر ssl نباشه اتصال برقرار نمیشه)
سلام نه متاسفانه با این روشها حل نمیشه قبلا خودم امتحان کردم حتی نسخه gson باید 2.8.9 باشه و گرنه ارور میده
محمد لطفی۱۹ آذر ۱۴۰۰، ۰۹:۲۷
حتی برای rtrofit هم همین مشکل رو داره
من تو یه شرکت کارموزی میکنم با پروژههای واقعی هم سرو کار دارم. الان برای یه ارتقا تو یه اپلیکشن از volly استفاده شده واقعا نمیدونم چرا ارور میده. حتی rtrofit رو با RXjava انجام دادم مشکلی نداره ولی اینجا نمیدونم چرا کرش میکنه
محمد لطفی۱۹ آذر ۱۴۰۰، ۰۹:۳۰
سلام.
اصلا لینکی که درخواست ارسال میکنید رو داخل مرورگر بزنید ببینید سرور پاسخ میده و مرورگر باز میکنه یا نه؟
محسن موحد۱۹ آذر ۱۴۰۰، ۱۰:۵۲
بله امتحان کردم وقتی با postman میزنم میاره حتی داخل اپلیکشن هم لیست رو بهم میده وبعد کرش میکنه از اپ میاد بیرون
محمد لطفی۱۹ آذر ۱۴۰۰، ۱۱:۰۰
سلام مجدد محمد جان
همونطور که خودتون گفتید (حتی retroft رو با RXjava انجام دادم مشکلی نداره ولی اینجا نمیدونم چرا کرش میکنه) این شاید بخاطر ورژن لایبرری باشه برای همین پیشنهاد دادم در صورتی که واقعا نیاز دارید از Volley استفاده کنید از ورژن 2.8.6 جیسان استفاده کنید
متاسفانه لایبرری والی روند توسعه خوبی نداره و دیر به دیر خودش رو با سایر لایبرریها سینک میکنه
درمورد اینکه هنگام sync با ارور مواجه میشید ارور مربوطه رو ارسال کنید و البته قبلش برای sync از یه vpn قوی مثل windscribe یا express vpn استفاده کنید .
درمورد این قسمت از پاسختون :
میاره حتی داخل اپلیکشن هم لیست رو بهم میده وبعد کرش میکنه از اپ میاد بیرون
ممنون میشم ارور رو ارسال کنید منظور اون قسمت از اندروید استودیو که براتون لاگ میندازه و نمایش میده تا متوجه بشم متنی که نوشته چی هست
یا میتونید اسکرین شات بگیرید فقط موردی که هست کل لاگها رو ارسال کنید حال به صورت عکس یا خود کد(ترجیحا اسکرین بگیرید)
2021-12-10 21:55:06.832 6803-6803/com.sevenlearn.a7learnstudents E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.sevenlearn.a7learnstudents, PID: 6803
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Expected an int but was 3333333334 at line 1 column 422701 path $[2749].score
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:229)
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:219)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
at com.google.gson.Gson.fromJson(Gson.java:963)
at com.google.gson.Gson.fromJson(Gson.java:928)
at com.google.gson.Gson.fromJson(Gson.java:877)
at com.sevenlearn.a7learnstudents.ApiService$3.onResponse(ApiService.java:84)
at com.sevenlearn.a7learnstudents.ApiService$3.onResponse(ApiService.java:79)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:82)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:29)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.NumberFormatException: Expected an int but was 3333333334 at line 1 column 422701 path $[2749].score
at com.google.gson.stream.JsonReader.nextInt(JsonReader.java:1171)
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:227)
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:219)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
at com.google.gson.Gson.fromJson(Gson.java:963)
at com.google.gson.Gson.fromJson(Gson.java:928)
at com.google.gson.Gson.fromJson(Gson.java:877)
at com.sevenlearn.a7learnstudents.ApiService$3.onResponse(ApiService.java:84)
at com.sevenlearn.a7learnstudents.ApiService$3.onResponse(ApiService.java:79)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:82)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:29)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
2021-12-10 21:55:06.911 6803-6803/com.sevenlearn.a7learnstudents I/Process: Sending signal. PID: 6803 SIG: 9
محمد لطفی۱۹ آذر ۱۴۰۰، ۱۸:۲۶
محمد لطفی۱۹ آذر ۱۴۰۰، ۱۸:۲۷
2021-12-10 21:58:43.723 6937-6937/com.sevenlearn.a7learnstudents E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.sevenlearn.a7learnstudents, PID: 6937
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Expected an int but was 3333333334 at line 1 column 422701 path $[2749].score
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:229)
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:219)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
at com.google.gson.Gson.fromJson(Gson.java:963)
at com.google.gson.Gson.fromJson(Gson.java:928)
at com.google.gson.Gson.fromJson(Gson.java:877)
at com.sevenlearn.a7learnstudents.ApiService$3.onResponse(ApiService.java:84)
at com.sevenlearn.a7learnstudents.ApiService$3.onResponse(ApiService.java:79)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:82)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:29)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.NumberFormatException: Expected an int but was 3333333334 at line 1 column 422701 path $[2749].score
at com.google.gson.stream.JsonReader.nextInt(JsonReader.java:1171)
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:227)
at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:219)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
at com.google.gson.Gson.fromJson(Gson.java:963)
at com.google.gson.Gson.fromJson(Gson.java:928)
at com.google.gson.Gson.fromJson(Gson.java:877)
at com.sevenlearn.a7learnstudents.ApiService$3.onResponse(ApiService.java:84)
at com.sevenlearn.a7learnstudents.ApiService$3.onResponse(ApiService.java:79)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:82)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:29)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
2021-12-10 21:58:43.805 6937-6937/com.sevenlearn.a7learnstudents I/Process: Sending signal. PID: 6937 SIG: 9
این خط کد هستش و اصلا واقعا نمیدونم کدی نیست که بگم خودم نوشتم دانلود کردم و فقط به تنها چیزی که گیر داده یه نسخه jsonهستش که بایستی نسخه 2.8.9 رو وارد کنی. تعداد ایتمهای لیست نزدیک 4000 تاست
محمد لطفی۱۹ آذر ۱۴۰۰، ۱۸:۳۲
طبق ارور هایی که ارسال کردید احتمال زیاد میتونه بخاطر مدل Student هم باشه که این خطا تولید شده
راه حلیکه میتونم بدم فایل Student.java رو بررسی کنید که خطایی نداشته باشید اگر مشکلی وجود نداشت به سراغ Adapter برید و ببینید موقعی که میخاید score رو setText کنید به استرینگ تبدیل میکنید یا خیر .
هر چند باز از اونجایی که گفتید پروژه پیوست شده هم دانلود کردید و چنین مشکلی رو داشت من شک م روی ورژن هاست چون اون پروژه پیوست شده رو تست کردم و مشکلی نداشت هر چند احتمال داره بخاطر همنامی پروژه به اشتباه پروژه پیوست شده رو روی اندروید استودیوتون import کردید .
بهر حال توی سوشال مدیا باهام در ارتباط باشید و سورس کد رو بفرستید تا بررسی کنم @PouriaShafiee
پوریا شفیعی۲۰ آذر ۱۴۰۰، ۰۸:۲۸
سلام دوستانی که در اینده به چنین مشکلی برخورد کردن بایستی کد Student.java رو به کدهای زیر تغییر بدن
package com.sevenlearn.a7learnstudents;
import android.os.Parcel;
import android.os.Parcelable;
import com.google.gson.annotations.SerializedName;
public class Student implements Parcelable {
private long id;
@SerializedName("first_name")
private String firstName;
@SerializedName("last_name")
private String lastName;
private String course;
private float score;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
public float getScore() {
return score;
}
public void setScore(float score) {
this.score = score;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(this.id);
dest.writeString(this.firstName);
dest.writeString(this.lastName);
dest.writeString(this.course);
dest.writeFloat(this.score);
}
public Student() {
}
protected Student(Parcel in) {
this.id = in.readLong();
this.firstName = in.readString();
this.lastName = in.readString();
this.course = in.readString();
this.score = in.readFloat();
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
@Override
public Student createFromParcel(Parcel source) {
return new Student(source);
}
@Override
public Student[] newArray(int size) {
return new Student[size];
}
};
}