بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

وب سرویس  و listener

مدیریت گفتگو
perin 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام وقتتون بخیر

دوستان من واقعا عذرخواهم که دارم با سوالام وقت شما عزیزان و میگیرم .خیلی شرمنده ام

اگه امکانش و دارین راهنماییم کنید

من یه مشکل دارم تو استفاده از listener  ماژول وب سرویس

  private static String        result;
 
public static void read_Adv(ArrayList<NameValuePair> param) {

result = null;

Webservice.listener listener = new listener() {

@Override
public void onReceived(String data) {

result = data;

Log.i("main", "result : " + result);// اینجا اطلاعات و درست نشون میده
}


Webservice.readUrl(Command.URL + "index.php?action=read_Adv", param, listener);

Log.i("main", "result 2 :" + result); // ابنحا نتیجه نال هست

if (result != null) {
try {
G.Advs.clear();
JSONArray tasks = new JSONArray(result);

این نتیجه است . چرا ترتیب نمایش log ها اینطوریه من فک می کردم باید برعکس باشه و حالا من باید چیکار کنم چون تو این شرایط لیست ویو ی من هیچی نشون نمیده دیگه

ممنونم از لطفتون

 

 

نظرات

Hossein Lamei Ramandi 10 سال پیش
من نمیدونم به چه علت میخواید از لیستنر در وب سرویس استفاده کنید میشه اینو اول توضیح بدید ؟
hamcalas 10 سال پیش
درسته اونجا باید نال باشه دیگه ٬ اونجا وقتی لاگ می گیرید هنوز دیتایی نیامده on reived جای خوبی یعنی دیتارسید ..... ٬ میتونید onPageFinished. هم داشته باشی یعنی وقتی لود صفحه تمام شد .
perin 10 سال پیش
من اول بدون لیستنر نوشته بودم ولی وقتی رو هاست بردم سرعت حرکت لیست ویو بس نهایت پایین بود این شد که از ترد و لیستنر استفاده کردم.
perin 10 سال پیش
خب مگه اول کلاس وب سرویس اجرا نمیشه که اطلاعات و میفرسته واسه لیسنر بعد من میریزم تو ریزالت
perin 10 سال پیش
دوستان خیلی ببخشید من متوجه نشدم چی کار کنم
perin 10 سال پیش
من واسه اینکه وب سرویس و با ترد بنویسم می بایست از لیستنر ها استفاده میکردم
Hossein Lamei Ramandi 10 سال پیش
اصلا لازم به این کار نبود : | براحتی میتونستید فقط با ترد انجام بدید
perin 10 سال پیش
چه طوری؟ من تو ترد نمی تونستم return result بزارم خب .
perin 10 سال پیش
ممنونم واسه پیگیریتون
alisherafat01 10 سال پیش
وب سرویس استاد دیگه کارایی نداره و بعدا به مشکل بر میخورید! توصیه میکنم از کتابخونه ی volley استفاده کنید
Hossein Lamei Ramandi 10 سال پیش
میشه بگید بعدا به چه مشکلی بر میخوریم ؟ و چرا کارایی نداره ؟
ابراهیم 10 سال پیش
علی اقا من هم سوال اقای admirallam برام پیش امده در مورد نداشتن کارایی وب سرویس ممنون می شم توضیح بفرمایید.
کاشی زاده 10 سال پیش
مشکل شما در اینجا هست که شما Result2 را زمانی چاپ میکنید که هنوز اطلاعات از وب سرویس گرفته نشده و Result که داخل listener قرار داره زمانی نشون داده میشه که مقدار از وب سرویس دریافت بشه درواقع برای اینکه بفهمیم کی وب سرویس جواب مارو میده از Listener استفاده میکنیم .
perin 10 سال پیش
ممنون آقای کاشی زاده. خب الان من واسه اینکه بتونم از اطلاعاتی که listener بهم میده اینجا استفاده کنم باید چی کار کنم؟
perin 10 سال پیش
چون برای نمایش تو لیست ویو نیاز دارم result2 نال نباشه دیگه.
کاشی زاده 10 سال پیش
به نظرم شما آموزش های استاد رو کامل گوش ندادید ، پیشنهاد میکنم مجددا آموزش ها رو مطالعه کنید همه چیز توضیح داده شده ، شما باید با استفاده از یک متد اطلاعات دریافتی رو به درخواست دهنده بفرستید تا روش پردازش کنه .

پاسخ‌ها 2

Hossein Lamei Ramandi 10 سال پیش

اینم یه نمونه کد

    new Thread(new Runnable() {

@Override
public void run() {
try {
result = WebService.readUrl("URl");
}
catch (Exception e) {}

if (result != null) {
G.handler.post(new Runnable() {

@Override
public void run() {
try {
JSONArray classes = new JSONArray(result);
for (int i = 0; i < classes.length(); i++) {
JSONObject object = classes.getJSONObject(i);
StructClass classInfo = new StructClass();
classInfo.name = object.getString("name");
classInfo.makan = object.getString("makan");
classInfo.date = object.getString("date");
classInfo.ostad = object.getString("ostad");
classInfo.zarfiyat = object.getString("maximum");
classInfo.status = object.getString("status");
classInfo.id = object.getInt("id");
G.classes.add(classInfo);
}
}
catch (JSONException e) {
e.printStackTrace();

}
adapter.notifyDataSetChanged();
}
});

}

}
}).start();

نظرات

perin 10 سال پیش
ممنونم یکی از لیست ویو هامو با این کد نشون دادم سرعتش خوب بود.
Hossein Lamei Ramandi 10 سال پیش
خواهش میکنم قابلی نداشت بازم اگه سوالی بود در حد توان در خدمتم
perin 10 سال پیش

سلام دوستان وقتتون بخیر

از اینکه وقتتونو در اختیار من قرار میدین واقعا ممنونم

اول از همه از همه دوستانی که راهنماییم کردن سپاسگزارم

دوستان من دچار یه مشکل اساسی شدم از وقتی پروژه و رو هاست بردم  یه جاهایی از پروژم اصلا درست اجرا نمیشه

در صورتی که وقتی آفلاین بود هیچ مشکلی نداشتم و همه جاش درست کار میکرد

من تقریبا ده ماه دارم رو این پروژه کار میکنم ولی الان که رو هاست بردم یه جاهایش کرش میکنه که قبلا نبود

فک میکنم بخاطر وب سرویس هست. من الان از وب سرویس پاسخ بالا استفاده میکنم از نظر سرعت خیلی خوبه ولی خب الان به مشکل خوردم باهاش . از لیستنر ها هم نتونستم استفاده کنم

من فردا باید پروژه و تحویل بدم نمی دونم باید چی کار کنم.

خب پروژ ه ای که آفلاین ایرادی نداشته چرا رو هاست ایراد داره.

ممنون میشم راهنماییم کنید.

 

نظرات

Hossein Lamei Ramandi 10 سال پیش
من خودم از اون کد ها توی پروژه هام استفاده میکنم و مشکلی باهاش نداشتم لاگ کتتون رو بررسی کنید و با لاگ تیکه تیکه کد هاتون رو بررسی کنید
perin 10 سال پیش
ممنون آره دارم همون کارو میکنم
HoCoder 10 سال پیش
اگه وب سرویس کار نمیکنه بهتر از کتابخانه های مثل volley استفاده کنید
alisherafat01 10 سال پیش
مشکلتون احتمالا به خاطر همون لیستنر هستش که تعریف نشده و الزامیه که تعبیه کنید با توجه به اینکه من از وب سرویس استاد استفاده نمیکنم نمیتونم بیشتر راهنماییتون کنم و با نظر HoCoder کاملا موافقم :)
Hossein Lamei Ramandi 10 سال پیش
آقای شرافت من اصلا از لیستنر استفاده نمیکنم و به مشکلی تا الان بر نخوردم احتمالا کد ها مشکل داره
perin 10 سال پیش
نه دوست عزیز.ممنون بابت پیگیریتون
Hossein Lamei Ramandi 10 سال پیش
گفتید بعضی جاها فقط مشکل داره درسته ؟ کد های اونجا ها رو بزارید ببینم میتونم مشکل رو پیدا کنم (این جور مواقع من کل کد هارو بصورت کامت در میارم و بعد قسم به قسمت از حالت کامت خارج میکنم )
perin 10 سال پیش
ممنون شما خیلی لطف دارین. یه سوال این کدی که گزاشتین و باید واسه همه تابع هام بزارم .یا فقط اونهایی که به لیست ویو ربط دارن.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .