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

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

h_uk2009  8 سال پیش  8 سال پیش
0 0

سلام

من میخوام یک 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);
}

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

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

پاسخ به سوال 
konda  8 سال پیش
0 0

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

+1 0
کد 500 مربوط به خطا در سرور هست، بررسی کنید ! (8 سال پیش)

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