Hi i'm developing an android application in android studio in java that send sign up information to the server, i'm using volley library to make HTTP requests(GET method) and for my server side i'm coding with php to get information from client side.
my issue is when i send persian characters to the server by android devices with api 16 or lower the server get requests parameters content like this : ???? , i don't have this problem when i make requests from devices with api 17 and higher
i tried to send sign up information in JSON format but it did not work.
my php version 5.3.5 ,mySql 5.5.8 and android studio version 3.
this is my android client side code :
private void sendDataToServer() {
SendDataObject dataObject = new SendDataObject();
dataObject.setName(edtName.getText().toString());
dataObject.setFamily(edtFamily.getText().toString());
dataObject.setCodeMelli(edtCodeMelli.getText().toString());
dataObject.setOstan(edtOstan.getText().toString());
dataObject.setID(ID);
String url = SplashActivity.SERVER_IP + "sign_up_users.php?name=" + edtName.getText()
+
"&family=" + edtFamily.getText().toString().trim() +
"&codeMelli=" + edtCodeMelli.getText().toString().trim() +
"&ostan=" + edtOstan.getText().toString().trim() +
"&ID=" + ID;
StringRequest getRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (response.toString().equals("true")) {
SplashActivity.USER_ID = ID;
Intent intent = new Intent(SignUpActivity.this, MainActivity.class);
startActivity(intent);
setSharedPrefs();
overridePendingTransition(R.anim.slide_i_left,R.anim.slide_i_right);
}
else {
NoInternetDialog cdd = new NoInternetDialog(SignUpActivity.this);
cdd.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
cdd.show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
getRequest.setRetryPolicy(new DefaultRetryPolicy(18000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
RequestQueue requestQueue = Volley.newRequestQueue(SignUpActivity.this);
requestQueue.add(getRequest);
}
and my php server side code sign_up_users.php :
<?php
include 'connect.php';
if (isset($_GET["name"]) && isset($_GET["family"]) && isset($_GET["codeMelli"]) && isset($_GET["ostan"]) && isset($_GET["ID"])) {
$name = $_GET["name"];
$family = $_GET["family"];
$codeMelli = $_GET["codeMelli"];
$ostan = $_GET["ostan"];
$ID = $_GET["ID"];
$stmt = $conn->prepare("UPDATE users SET name=:name ,family=:family, validation_status=1, codeMelli=:codeMelli , ostan=:ostan WHERE ID=:ID");
$stmt->bindParam(':name',$name);
$stmt->bindParam(':family',$family);
$stmt->bindParam(':codeMelli',$codeMelli);
$stmt->bindParam(':ostan',$ostan);
$stmt->bindParam(':ID',$ID);
$res = $stmt->execute();
$stmt = null;
if ($res) {
echo 'true';
}
else {
echo 'false';
}
}
else {
echo 'error_parameters';
}
?>