درست کار نکردن دریافت اطلاعات از سرور
با سلام من سه مقدار رو از دیتابیس گرفته و خروجی میگیرم (به صورت جیسون) داخل php ولی مشکلی که دارم این هست که اکثر موارد مقدار درست نمایش داده نمیشه هر چی گشتم مشکلی در کدهام ندیدم . ضمنا خروجی php داخل مرورگر درست هست و مطمئنا مشکلی نداره .
کد اتصال به سرور :
urlConn = url.openConnection();
bufferedReader = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
StringBuffer stringBuffer = new StringBuffer();
String line;
while ((line = bufferedReader.readLine()) != null)
{
stringBuffer.append(line);
}
JSONObject json = null;
try {
json = new JSONObject(stringBuffer.toString());
}catch (Exception e){
}
در یک موضوع جداگانه پرسیدم که آیا این روش اتصال به سرور و وب سرویس درست و به روز هست یا قدیمی شده ؟ لینک
به هر حال مشکل اینجاست که مقادیر رو از خودش میاره مثلا سه عدد 5 و 8 و 9 هست ولی خودش 1 و 1 و 0 میاره مثلا .
آیا این اتصال ، کش مموری دارد ؟ یعنی مقادیر رو از سرور نگیره و از کش بگیره ؟
این هم ادامه کد (گرفتن مقدار از جیسون ) :
int V1 = json.getInt("Value1");
int V2 = json.getInt("Value2");
int V3 = json.getInt("Value3");
خیلی وقتم رو گرفته هر کاری میکنه درست اجرا نمیشه ؟ آیا امکانش هست از سرور باشه ؟ البته سرور داخل مرورگر درست اجرا میشه و هر تعداد رفرش میکنم اطلاعات رو درست بر میگردونه ولی داخل برنامه این جوری میشه . پیشاپیش ممنون.
احتمالا خطا در گرفتن مقدار ها است به این شکل تست کنید و ببیند مشکلی از کجاست
try{
int v1=json.getInt("value1");
}catch(Exception e){
Log.i("TAG",e);
}
اگر می خواهید با یک خطا ادامه کار لغو نشه بقیه موارد هم تک تک صورت بالا و لاگ را کنترل کنید ببینید کجا خطا هست
از این توضیحات شما اشکال کار مشخص نیست، چند کار می تونید انجام بدید برای ارتباط با سرور می تونید از کتابخانه هایی مثل volley استفاده کنید https://developer.android.com/training/volley/index.html
ممنون از راهنمایی تون ولی مشکل از این نبود . مشکل من بیشتر به بخش زیر
while ((line = bufferedReader.readLine()) != null)
{
stringBuffer.append(line);
}
JSONObject json = null;
try {
json = new JSONObject(stringBuffer.toString());
}catch (Exception e){
}
مربوط هست چون وقتی دیباگ میکنم و مقدار json رو نگاه میکنم همون مقادیر اشتباه رو نشون میده . به نظر میاد به سرور وصل نمیشه و از خودش مقدار دهی میکنه .
چون در مرورگر وقتی آدرس رو تست میکنم مقادیر صحیح رو برمیگردونه ولی داخل برنامه مقادیری از خودش بر میگردونه هر چند شکل و قالب جیسون برگشتی درسته ولی مقادیر صحیح نیست ! واقعا هنگ کردم
با تشکر بالاخره خودم پیدا کردم همون طور که انتظار داشتم و قبلا گفته بودم از کش بود .
درواقع به جای آنکه برنامه بره و از سرور اطلاعات جدید رو دریافت کنه میرفت و از کش گوشی میخوند و اطلاعات قدیمی رو میاورد . این مشکل رو با سه خط کد زیر درست کردم :
urlConn.setRequestProperty("Cache-Control", "no-cache");
urlConn.setDefaultUseCaches(false);
urlConn.setUseCaches(false);
البته برای من خیلی بد نشد و به لطف دوستان رفتم و volley رو یاد گرفتم فک میکردم خیلی سخت باشه ولی راحت و آسون بود .
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .