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

ارسال پارامتر به سرور توسط volley

SaeiD-as  8 سال پیش  8 سال پیش
0 0

سلام دوستان

برای ارسال پارامتر به سرور توسط 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'];

سوالم اینه که چطور می تونیم آرایه ای از مقادیر رو به همین شکل به سرور بفرستیم و دریافت کنیم؟
من یک لیست از نام و نام خانوادگی دارم که باید بعد از ثبت همه آنها، به سرور ارسال کنم ولی راه اون رو نمی دونم.

لطفا راهنمایی کنید
سپاس

0 0
واقعا اینقدر سخته کسی نمی تونه جواب بده؟ تا اونجایی که فهمیدم باید یک آرایه JSON از لیستم بسازم و به سرور بفرستم؛ و اونطرف هم لیست رو بگیرم. ساخت JSON و دریافتش از سمت سرور رو نمی دونم به چه شکلی هست... (8 سال پیش)
 برای این سوال 3 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
Criss  8 سال پیش
+1 0

سمت سرور رو به این صورت کار کنید : از طرف کلاینت 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())
0 0
سپاس ازت :) پس سمت سرور مثل همون قدیمه با این تفاوت که بعد از اینکه از طریق $_REQUEST داده مد نظرم رو گرفتم اونو باید دیکد کنم؟ دلیل دیکد کردنش چیه؟ (8 سال پیش)
0 0
ارسال به سرور منظورتون همون params.put هست که قبلا انجام می دادم؟ بجاش از همین کد شما استفاده کنم؟ اینجا فقط jsonPhone رو ارسال کردید (8 سال پیش)
+1 0
دلیل دیکد شدن برای تبدیل یک String با استاندارد جیسون به یک آبجکت از نوع آرایه در php هست ، ارسال به سرور همون params.put هست (8 سال پیش)
پاسخ به سوال 
Criss  8 سال پیش
+1 0

 پاسخ صحیح

خب الان کدتون رو نگاه کردم متوجه شدم که دارید دوتا ارایه جدا میفرستید که اسم کوچیک جدا هست و اسم بزرگ هم جدا

بهتره که بصورت زیر جیسون رو بسازید:

 [{"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);
        }
پاسخ به سوال 
SaeiD-as  8 سال پیش
0 0

من یک حلقه درست کردم و داده هارو به شکل زیر وارد کردم:

 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 اینه که یکی یکی داده ها دریافت کنم و ثبت کنم. نمیدونم درست وارد شده یا نه!
سپاس

+1 0
برای ارسال به سمت سرور بهتر هست از لایبری استفاده کنید که از بین رتروفیت و والی و بقیه موارد من Jsoup و OkHttp رو بهتون پیشنهاد میکنم که کار باهاشون خیلی ساده تر از بقیه هست ، بعد از اینکه JSON رو سمت سرور دریافت کردید اون رو دیکد میکنید و یک ارایه php میگیرید ، یک حلقه ForEach روی ارایه میزنید و برای هر ایتم insert کنید (8 سال پیش)

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