آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل با پروژه Notes

MarAnd  9 سال پیش  9 سال پیش
0 0

سلام دوستان . مشکل من مربوط میشه به 30 دقیقه ی اول اموزش . من باید کدهای مربوط به بخش کلاینتم رو در یک Thread جداگانه بنویسم و در تابع run ؛ اما چون مقدار برگشتی این تابع void هست نمیتونم داخلش بنویسم که مقدار result رو برام برگردونه . چی جوری باید بنویسم ؟

سپاسگزارم اگه راهنمایی کنین .

+1 0
مشکلت دقیقا مربوط به کدوم کلاس میشه؟ (9 سال پیش)
+3 0
شما باید یک لیسنر تعریف کنید و هنگامی که داده ها دریافت شد بهتون خبر بده و وقتی داده ها دریافت شد میتونید ادامه دستوراتتون رو بنویسید (9 سال پیش)
0 0
مشکلم مربوط به کلاس Webservice هست و تابع readUrl که داخلش کد های مربوط به کلاینت رو نوشته شده (9 سال پیش)
0 0
میشه یه کم بیشتر بگین چه جوری با لیسنر اکی کنم ؟ ممنون (9 سال پیش)
 برای این سوال 3 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
MarAnd  9 سال پیش
0 0

قسمتی از کد رو که مشکل دارم باهاش اینجا گذاشتم و چیزی که باید return بشه رو کامنت کردم  : 

public static  String readUrl(String url){

new Thread(new Runnable() {
String result;
@Override
public void run() {
try {
HttpClient client = new DefaultHttpClient();
HttpGet method = new HttpGet(url);
HttpResponse response = client.execute(method);
InputStream inputStream = response.getEntity().getContent();
String result = convertInputStramToString(inputStream);
//return result;


} catch (IOException e) {
e.printStackTrace();
}

}

}).start();


return null;
}
پاسخ به سوال 
یاسر   9 سال پیش
+1 0

 پاسخ صحیح

بفرما اینم کد کامل

  public interface OnDataRecive {
    void onRecive(String data);

    void onError();
  }
public static void readUrl(String url, final OnDataRecive listener){ new Thread(new Runnable() { @Override public void run() { try { HttpClient client = new DefaultHttpClient(); HttpGet method = new HttpGet(url); HttpResponse response = client.execute(method); InputStream inputStream = response.getEntity().getContent();
final String data = convertInputStreamToString(inputStream); G.HANDLER.post(new Runnable() { @Override public void run() { listener.onRecive(data); } }); } catch (IOException e) { G.HANDLER.post(new Runnable() { @Override public void run() { listener.onError(); } }); } } }).start(); }

صدا زدن متد هم به صورت زیر است

       Webservice.readUrl("URL", new Webservice.OnDataRecive() {
        @Override
        public void onRecive(String data) {
          Log.i("Test", "JSON " + data);
        }

        @Override
        public void onError() {
          Log.i("Test", "Error to get JSON ");
        }
      });

لایک فراموش نشه :)

0 0
سپاسگزارم واقعا ، فقط میشه بگین G.HANDLER.post چی کار میکنه اینجا ؟ (9 سال پیش)
+1 0
خواهش میکنم، هر کدی که شما توی G.HANDLER.post بنویسید داخل Thread Main اجرا میشه و فکر کنم لیسنر نیازمند اجرا شدن توسط Thread Main باشه (9 سال پیش)
0 0
ویدیو بخش همزمانی استاد رو ببینید کلا متوجه خواهید شد (9 سال پیش)
0 0
درسته (9 سال پیش)
0 0
ممنونم ، اره دیدمش دوباره (9 سال پیش)
0 0
لطفا کمک کنین بچه ها :( (9 سال پیش)
پاسخ به سوال 
MarAnd  9 سال پیش
0 0

سلام ، دوستان در ادامه همین پروژه ی Notes وقتیکه میخوام از طریق اندروید به Table یک رکورد اضافه کنم با خطای ران تایم زیر مواجه میشم نمیدونم چرا به Thread هم گیر داده درصورتیکه در قسمت های قبل مشکلی نداشتم . من از متد بالایی که دوست عزیز بهم گفتن استفاده میکنم . این کد مربوطه به این قسمت و خطاهایی که میده  :

private void sendData(String title, String desc) {
Webservice.
readUrl("http://192.168.1.34/note-server/insert.php?title=" + title + "&desc= " + desc , new Webservice.OnDataRecive() {
@Override
public void onRecive(String data) {
Log.
i("Test", "JSON " + data);
}
public void onError() {
Log.
i("Test", "Error to get JSON ");
}

});
}

»»»»»»»»»»»»»»»»»»»»»» Errors:

10-23 09:39:31.124 2585-2880/com.example.n5110.notes E/AndroidRuntime: FATAL EXCEPTION: Thread-97 Process: com.example.n5110.notes, PID: 2585 java.lang.IllegalArgumentException: Illegal character in query at index 69: http://192.168.1.34
/note-server/insert.php?title=From%20Android&desc= Desc%20From%20Android at java.net.URI.create(URI.java:733) at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:80) at com.example.n5110.notes.Webservice$1.run(Webservice.java:55) at java.lang.Thread.run(Thread.java:818) 10-23 09:39:32.700 2585-2881/com.example.n5110.notes E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa2a911c0


0 0
منم مشکل ایپی دارم ایپی اینترنت که بهش وصل میشم وارد میکنم نمیدونم چرا نمیخونه (9 سال پیش)
+1 0
نوشته Webservice در خط 55 مشکل وجود داره چک کنید ببینید چه کدی نوشتید اونجا (9 سال پیش)
0 0
کد خط 55 این هست : ;(HttpGet method = new HttpGet(url ولی قبلا که مشکلی باهاش نداشتم :( (9 سال پیش)
0 0
درواقع من هیچ تغییری تو قسمت Webservice.java ایجاد نکردم فقط متد بالا رو اضافه کردم و قبلیا رو داخل متد ()readData گذاشتم مثل استاد. البته میگه یه illegal Character هم وجود داره ! (9 سال پیش)
0 0
دوستان ، کسی نظری نداره ؟!! :( (9 سال پیش)
0 0
دوستان ، کسی نظری نداره ؟!! :( (9 سال پیش)
0 0
من جاتون بودم یکم تلاش میکردم تا بت یه لایبرری دیگه کار کنم مثل وولی مثلا (9 سال پیش)
0 0
اره خودمم ذیگه به این نتیجه رسیدم ، من تلاش هم میکنم :| (9 سال پیش)

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