بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

استفاده از volly برای ارسال داده

مدیریت گفتگو
h_uk2009 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام

من میخوام یک arraylist از اطلاعات رو که مثلا حداکثر ۸۰ رکورد هست شامل نام نام خانوادگی تاریخ و .... رو به صفحه php ارسال کنم . سریع میرم سر اصل مطلب

با async و namevaluepair ارسال کردم با روش استاد ولی مشکلی که هست اطلاعات روی سرعت های پایین e , G و حتی h+ اطلاعات درست ارسال نمیشه و کم زیاد میشینه توی دیتابیس . ازونجایی که دوستان پیشنهاد کردن با کتابخانه volly کار کنم ! امروز کامل روش وقت گذاشتم و به نتایجی رسیدم . متاسفانه توسط volly هم داده ها روی لوکال خوب کار میکنه ولی روی هاست واقعی با خطا و کم و کاستی ارسال میشود ... واقعا خسته شدم خواهشا خواهشا دوستان همراهی کنن تا مشکل من رد شه ... من خیلی از کد رو نوشتم که خیلی به درد دیگر دوستان هم میخوره ... کد من با volly برای ارسال کار میکنه ولی مسله اینه که زمانی که میندازم دستور ارسالش رو توی حلقه for و میخوام که تک تک خونه های آر ایه رو بفرسته سمت سرور همش ارسال میشه از سمت اندروید ولی سمت سرور مثلا یکی دوتاش گاهی درج نمیشه میشه !‌ و و و

توی اون بخش ارسال پارامترgetparam  فقط میشه hashmap ارسال کرد .. راهی نیست که بشه یک jsonobject رو که حاوی یک آرایه پرزرق و برقه یکجا ارسال کرد که نخوام از حلقه for استفاده کنم برای ارسال ؟ این سوال خیلی کلیدیه لطفا پاسخ بدید ؟

سورس کد رو اینجا گذاشتم که بهتر متوجه بشید .

کد php

 <?php
header('Content-Type: text/html; charset=utf-8');
//header('Content-type: application/json');


require_once('database.php');

$connection =database::connectToDatabase();

if($_SERVER['REQUEST_METHOD']=='POST'){
// receiving the post params
$name = $_POST['name'];
$email = $_POST['email'];
$password = $_POST['password'];

mysqli_query($connection, "INSERT INTO test_volly VALUES (0,'$name','$email','$password')");
mysqli_close($connection);
}
 

سورس اندروید :

 public class ActivityMain extends Activity {



//@url = Url for get json Object


// String urlsend = "http://192.168.1.105/knc/sabtvolly.php";
String urlsend = "http://www.knc-app.ir/knc/sabtvolly.php";

public static ArrayList<StructSend> SefareshTemp = new ArrayList<StructSend>();
public static int i, j = -1;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SefareshTemp.clear();
//----------------------------------------

//----------------------------------------
final ProgressDialog pDialog = new ProgressDialog(this);
pDialog.setMessage("Loading...");
// pDialog.show();
//------------------------------Send Data
final StringRequest SendReq = new StringRequest(Method.POST,
urlsend, new Response.Listener<String>() {

@Override
public void onResponse(String response) {
Log.i("hosein", "" + response.toString());
// hideDialog();
pDialog.hide();
try {
JSONObject jObj = new JSONObject(response);
}
catch (JSONException e) {
// JSON error
e.printStackTrace();
// Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
}

}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_LONG).show();
pDialog.hide();
}
}) {

@Override
protected Map<String, String> getParams() throws AuthFailureError {
j++;
Log.i("hosein", "j is : " + j);
// Posting parameters to login url
Map<String, String> params = new HashMap<String, String>();
params.put("name", SefareshTemp.get(j).name.toString());
params.put("email", SefareshTemp.get(j).email.toString());
params.put("password", SefareshTemp.get(j).password.toString());
return params;
}

};
//--------------------------------------------------------------------------------------
findViewById(R.id.bt).setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
pDialog.show();

for (i = 0; i < 200; i++)
{
StructSend node = new StructSend();
node.name = "hosein" + i;
node.email = "email" + i;
node.password = "password" + i;
SefareshTemp.add(node);
}
j = -1;
for (int k = 0; k < 200; k++)
{
//Log.i("hosein", "" + SefareshTemp.get(j).name);
G.getInstance().addToRequestQueue(SendReq);
}

}
});

نظرات

احمد اسدی 10 سال پیش
کدتون شدید خطرناکه. پدر سرور رو در میاره. توی یک حلقه for ، دویستا درخواست به سرور ارسال میشه. مثه این میمونه که شما تو کمتر از صدم ثانیه ، 200تا پنجره یک سایت رو باز کنید و در همان لحظه دیتا به سرور ارسال کنید. پیشنهاد میکنم دیتاهاتون رو توی یک آرایه بریزید و تنها با یک درخواست، لیست رو به سرور ارسال کنید. سپس از طرف سرور لیست (آرایه) رو کالبدشکافی کنید.
h_uk2009 10 سال پیش
خوب مشگلم همینه توی سوال هم پرسیدم گفتم چجوری میشه با یک آرایه بفرستم و اونطرفم یک آرایه بخونم
h_uk2009 10 سال پیش
توی اون بخش ارسال پارامترgetparam فقط میشه hashmap ارسال کرد .. راهی نیست که بشه یک jsonobject رو که حاوی یک آرایه پرزرق و برقه یکجا ارسال کرد که نخوام از حلقه for استفاده کنم برای ارسال ؟ این سوال خیلی کلیدیه لطفا پاسخ بدید ؟

پاسخ‌ها 2

h_uk2009 10 سال پیش

من موفق شدم داده ها رو ارسال کنم توسط والی به صورت آرایه ولی مشکلی که باز هست اینه که اطلاعات بعضا دوبار ارسال و درج توی دیتابیس میشوند ولی رو لوکال درست کار میکنه ... به زودی آموزش و سورسش رو میزارم اینجا

نظرات

konda 10 سال پیش

سلام
علت این خطا چی می تونه باشه
 E/Volley: [196] BasicNetwork.performRequest: Unexpected response code 500 for site adres

نظرات

MeY3am 10 سال پیش
کد 500 مربوط به خطا در سرور هست، بررسی کنید !

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