ارسال اطلاعات به صورت غیر همزمان (Async) در اندروید
سلام و خسته نباشید به همگی
من میخواستم به وب سرویسم درخواست بفرستم به این صورت که چندین سطر دارم تو دیتابیسم میخوام این سطر ها رو بفرستم به web api
اینا رو باید تبدیل کنم به جیسون بفرستم یا نه تک به تک بخونم از دیتابیس به صورت تکی بفرستم ؟
سوال دومم این هست چطور میتونم درخواستم رو به صورت غیر همزمان بفرستم یعنی درخواست اولم بره response برگرده و درخواست دوم ارسال بشه ؟یعنی درخواست بعدی بعد نتیجه گرفتن از درخواست قبلی اجرا بشه؟
(برای سوال دومم request ام رو گذاشتم داخل While ولی منتظر نمیمونهResponse برگرده از سرور )
لایبرریم هم okhttp هست ممنون میشم راهنمایی کنین
معمولا Web Service نتیجه رو به صورت Json برمیگردونه. چون خروجی جیسون یک خروجی استاندارد هست که برای همه Device ها و اپلیکیشن ها قابل دریافت و قابل فهم هست. شما باید کل اطلاعاتی رو که میخواید از طریق وب سرویس ارسال کنید از دیتابیس بخونید و همه رو در قالب جیسون ارسال کنید. به مثال زیر دقت کنید
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(
"https://api.dailymile.com/entries.json?oauth_token="
+ token);
httpPost.setHeader("content-type", "application/json");
JSONObject data = new JSONObject();
data.put("message", dailyMilePost.getMessage());
JSONObject workoutData = new JSONObject();
data.put("workout", workoutData);
workoutData.put("activity_type", dailyMilePost.getActivityType());
workoutData.put("completed_at", dailyMilePost.getCompletedAt());
JSONObject distanceData = new JSONObject();
workoutData.put("distance", distanceData);
distanceData.put("value", dailyMilePost.getDistanceValue());
distanceData.put("units", dailyMilePost.getDistanceUnits());
workoutData.put("duration", dailyMilePost.getDurationInSeconds());
workoutData.put("title", dailyMilePost.getTitle());
workoutData.put("felt", dailyMilePost.getFelt());
StringEntity entity = new StringEntity(data.toString(), HTTP.UTF_8);
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);
ارسال اطلاعات به Server به صورت Async در اندروید
برای ارسال اطلاعات به صورت ناهمزمان بهتره کلاس خودتون رو به صورت Async تعریف کنید. مثال های زیادی توی اینترنت برای این کار هست
class AsynTask extends AsyncTask<Void, Void, String>{}
در مورد AsyncTask و RxJava تحقیق کنید. البته AsyncTask از اندروید 11 دیگه Deprecate شده و گوگل پیشنهاد داده از کلاس خود جاوا استفاده بشه. توضیحات سایت Developer اندروید رو بررسی کنید:
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- ویرایش فایل apk و کامپایل مجدد با امکان دانلود
- نحوه انتشار اپیلیکشن اندروید در گوگل پلی چگونه است ؟
- انتخاب تصویر از گالری گوشی در برنامه نویسی اندروید
- مفهوم Deep Link در برنامه نویسی اندروید
- ستون کلید اصلی در دیتابیس از نوع int بهتر است یا Guid
- تفاوت اندروید و زامارین چیست ؟
- دریافت دیتای اشتباه توسط web api
- انواع سنسورهای موجود برای استفاده در برنامه نویسی اندروید
- Context در برنامه نویسی اندروید چیست و چه کاربردی دارد؟
- ساخت اپلیکیشن خانه هوشمند با استفاده از اندروید و ios