مشکل با پروژه Notes
سلام دوستان . مشکل من مربوط میشه به 30 دقیقه ی اول اموزش . من باید کدهای مربوط به بخش کلاینتم رو در یک Thread جداگانه بنویسم و در تابع run ؛ اما چون مقدار برگشتی این تابع void هست نمیتونم داخلش بنویسم که مقدار result رو برام برگردونه . چی جوری باید بنویسم ؟
سپاسگزارم اگه راهنمایی کنین .
قسمتی از کد رو که مشکل دارم باهاش اینجا گذاشتم و چیزی که باید 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;
}
بفرما اینم کد کامل
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 ");
}
});
لایک فراموش نشه :)
سلام ، دوستان در ادامه همین پروژه ی 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
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .