ارسال پارامتر به سرور توسط volley
مدیریت گفتگو
سلام دوستان
برای ارسال پارامتر به سرور توسط volley به این شکل عمل می کردیم:
آرایه params رو می ساختیم:
private static Map<String, String> params = new HashMap<String, String>();
مقادیری که مد نظرمون بود رو ارسال می کردیم:
params.clear();
params.put("name", name);
params.put("family", family);
تابع ارسال پارامتر رو اضافه می کردیم:
@Override
protected Map<String, String> getParams() {
return params;
}
سمت سرور هم به این شکل GET می کردیم:
$name = $_REQUEST['name'];
$family = $_REQUEST['family'];
سوالم اینه که چطور می تونیم آرایه ای از مقادیر رو به همین شکل به سرور بفرستیم و دریافت کنیم؟
من یک لیست از نام و نام خانوادگی دارم که باید بعد از ثبت همه آنها، به سرور ارسال کنم ولی راه اون رو نمی دونم.
لطفا راهنمایی کنید
سپاس
پاسخها 3
مشاهده پاسخ صحیحسمت سرور رو به این صورت کار کنید : از طرف کلاینت JSONArray بگیرید و بصورت زیر اونو به آرایه در php تبدیل کنید
$phone = $_REQUEST['phone'];
$phone = json_decode($phone);
if (empty($phone)) {
$phone = array();
}
حالا چطوری JSONArray سمت کلاینت ساخته و ارسال بشه ؟ به شکل زیر :
JSONArray jsonPhone = new JSONArray();
for (String number: phone) {
jsonPhone.put(number);
}
ارسال به سرور :
.data("phone", jsonPhone.toString())
نظرات
خب الان کدتون رو نگاه کردم متوجه شدم که دارید دوتا ارایه جدا میفرستید که اسم کوچیک جدا هست و اسم بزرگ هم جدا
بهتره که بصورت زیر جیسون رو بسازید:
[{"name":"ali","family":"alinejad"},{"name":"hamid","family":"hamidi"}]
برای ساخت این جسون سمت اندروید به این شکل میشه
JSONArray names = new JSONArray();
for (loop) {
JSONObject jsonPerson = new JSONObject ();
jsonPerson.put("name",NAME)
jsonPerson.put("family",FAMILY)
names.put(jsonPerson);
}
نظرات
من یک حلقه درست کردم و داده هارو به شکل زیر وارد کردم:
try {
JSONArray persons = new JSONArray();
for (int i = 0; i< G.persons.size(); i++) {
JSONObject jsonPerson = new JSONObject ();
jsonPerson.put("person_name", G.persons.get(i).name);
jsonPerson.put("person_family", "" + G.persons.get(i).family);
persons.put(jsonPerson);
}
} catch (JSONException e) {
e.printStackTrace();
}
populateWebInsert();//در اینجا تابع ارسال مقادیر و ثبت در دیتابیس وارد شده
الآن این مقادیر رو بصورت POST چطوری باید ارسال کنم؟
قبلا یه تابع به صورت زیر وارد می کردیم و مقادیر ارسال می شدند:
@Override
protected Map<String, String> getParams() {
return params;
}
ولی الآن نمی دونم دقیقا به چه صورته؟
سمت سرور هم باید حلقه وارد کنیم تا تک تک مقادیر رو بگیریم؟
من این کدهارو وارد کرده ام:
$name = $_REQUEST['person_name'];
$family = $_REQUEST['person_family'];
mysqli_query($connection, "INSERT INTO person VALUES (0, '$name', 'family')");
هدفم از کدهای php اینه که یکی یکی داده ها دریافت کنم و ثبت کنم. نمیدونم درست وارد شده یا نه!
سپاس
نظرات
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
نظرات