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

مشکل در ارسال مقادیر به سرور با volle y

Plumber  9 سال پیش  9 سال پیش
0 0

سلام دوستان

لطفا اگه میشه نحوه ارسال مقادیر رو به سرور از طریق کتابخانه volly و نحوه اضافه کردن اون ها به دیتابیس رو توضیحی بدید....

این کد اندروید:

String tag_json_array = "tag_json_array";

String urlInsert = "http://192.168.8.100/bank-server/services.php?action=insert";

JSONObject jsonObject;

TextView txtUser;




@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form_main);


insertDataToServer();


}

private void insertDataToServer(){


JsonArrayRequest jsonArrReq = new JsonArrayRequest(urlInsert,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray jsonArray) {



}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
VolleyLog.e("TEST", volleyError.getMessage());
}
}){

@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("name", "Android-hive");
params.put("email", "abc@androidhive.info");
params.put("pass", "password123");
params.put("balance", "10");
return params;
}


};

G.getInstance().addToRequestQueue(jsonArrReq, tag_json_array);


}


 

این هم کد سمت سرور:

<?php

if (isset($_REQUEST['action'])){
$action = $_REQUEST['action'];
} else {
echo "Invalid Data";
exit;
}

if ($action=="read"){
read();
} else if ($action=="insert"){
insert();
} else if ($action=="update"){
update();
} else if ($action=="remove"){
remove();
}

/**
*
*/
function connectToDatabase(){
$connection=mysqli_connect("localhost", "root", "", "bank_db");

if (mysqli_connect_errno()) {

echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

return $connection;
}

/**
*
*/
function read(){

$connection = connectToDatabase();
$result = mysqli_query($connection, "SELECT * FROM user");

$output = array();
while($row = mysqli_fetch_array($result)) {
$record = array();

$record['user_id'] = $row['user_id'];
$record['user_name'] = $row['user_name'];
$record['user_email'] = $row['user_email'];
$record['user_pass'] = $row['user_pass'];
$record['user_balance'] = $row['user_balance'];

$output[] = $record;
}

echo json_encode($output);
mysqli_close($connection);
}

/**
*
*/
function insert(){

$connection = connectToDatabase();

$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$pass = $_REQUEST['pass'];
$balance = $_REQUEST['balance'];


mysqli_query($connection, "INSERT INTO user VALUES (0, '$name', '$email', $pass' , '$balance)");

mysqli_close($connection);
}

/**
*
*/
function update(){
$connection = connectToDatabase();

$id = $_REQUEST['id'];
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$pass = $_REQUEST['pass'];
$balance = $_REQUEST['balance'];
mysqli_query($connection, "UPDATE user SET user_name=$name, user_email='$email', user_pass='$pass' , user_balance='$balance' WHERE user_id=$id");

mysqli_close($connection);
}

/**
*
*/
function remove(){
$connection = connectToDatabase();

$id = $_REQUEST['id'];
mysqli_query($connection, "DELETE FROM user WHERE user_id=$id");

mysqli_close($connection);
}

 

ممنون :)

0 0
سلام فکر نکنم اینجوری که شما سوال رو طرح کردین کسی جوابی بده. باید مشکلتون رو درست مطرح کنید نه اینکه کلی بگین چطور میشه. این لینک و لینک و لینک رو نگاه کنید و یه سرچی هم خودتون بزنید کار با Volley رو یاد بگیرید. (9 سال پیش)
0 0
ممنون ولی این سایت ها هم دقیقا همین روش رو نشون داد، من میخوام بدونم این اطلاعات رو چطوری ارسال کنم که داخل دیتابیس اینسرت بشن! (9 سال پیش)
0 0
سلام برای ارسال پارام در وولی شما باید از استرینگ ریکوست استفاده کنید نه جیسون ریکوست (9 سال پیش)
0 0
ممنون فقط امکانش هست قطعه کد بالارو تبدیل به استرینگ ریکوئست کنی و بنویسی برام؟بازم جواب نداد برام چون! (9 سال پیش)
0 0
کامنت صرفا جهت آپ :| (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
علیرضا کامکار  9 سال پیش
+1 0

 پاسخ صحیح

سلام برای ارسال پارامتر نمیتونید از جیسون ریکوست استفاده کنید باید از استرینگ استفاده کنید ... یه کلاس به اسم VolleyRequest بسازید و کدهای زیر رو داخلش قرار بدید

import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;

import java.util.Map;

public class VolleyRequest extends StringRequest {

private Map<String, String> params;

public VolleyRequest(int method, String url, Map<String, String> params,
Response.Listener<String> listener, Response.ErrorListener errorListener)
{
super(method, url, listener, errorListener);
this.params = params;
}

@Override
protected Map<String, String> getParams() throws AuthFailureError
{
return params;
}
}

بعد ساختن کلاس حالا میتونید به شکل زیر ازش استفاده کنید

Map<String, String> params = new HashMap<>();
params.put("name", "AliReza Kamkar");

VolleyRequest request = new VolleyRequest(Request.Method.POST, url, params, new Response.Listener<String>() {
@Override
public void onResponse(String result) {

}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {

}
});

RequestQueue queue = Volley.newRequestQueue(this); // this => context
queue.add(request);
0 0
خیلی ممنون جواب داد :) (9 سال پیش)

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