I'm trying to post some data using volley to a server.
The issue seems to with an encoded string image.
On this line
String name = namefield.getText().toString();
String age = agefield.getText().toString();
String gender = genderfield.getText().toString();
String color = colorfield.getText().toString();
String notes = notesfield.getText().toString();
String images = encodeImage(bitmap);
updatedetails(name, age, gender, color, notes, String.valueOf(owner), String.valueOf(id), images);
if I change image to empty string
updatedetails(name, age, gender, color, notes, String.valueOf(owner), String.valueOf(id), "");
then than the data sends to server, which is how I know the image is the problem.
I logged the image response and this is what I get:
Strings: /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAUAAk8DASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+8LwX
/wAit4a/7F/R/wD0011z/wCrH4/+hVyPgv8A5Fbw1/2L+j/+mmuuf/Vj8f8A0KuHC/7rP5f+knDh
f91n8v8A0ksUUUV3HcFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBxPgv/kVvDX/AGL+j/8Apprr
n/1Y/H/0KuR8F/8AIreGv+xf0f8A9NNdc/8Aqx+P/oVcOF/3Wfy/9JOHC/7rP5f+kliiivGvjx8b
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
while the other data response are normal like:
Strings: red
The logcat says the problem is here:
try {
JSONObject jsonObject = new JSONObject(result);
Log.i("Check", result);
Here's the relevant code:
public void updatedetails(final String name, final String age, final String gender, final String color, final String notes, final String owner, final String id, final String pet_image) {
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setCancelable(false);
progressDialog.setMessage("Updating pet details");
progressDialog.show();
try {
String url = "https://happy-paws.co.za/dogwalking/apis/v1/pet/update_pet.php";
StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
new com.android.volley.Response.Listener<String>() {
@Override
public void onResponse(String response) {
String result = response.toString();
// Log.d("zzzz","res "+result);
Toast.makeText(update.this, response, Toast.LENGTH_SHORT).show();
getDataResponse1(result);
Log.i("Check", result);
Log.i("Check", response);
}
},
new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(update.this, error.getMessage(), Toast.LENGTH_SHORT).show();
Log.d("TAG", error.getMessage());
}
}) {
@Override
public byte[] getBody() throws com.android.volley.AuthFailureError {
String str = "{"name":"" + name + "","age":"" + age + "","gender":"" + gender + "","color":"" + color + "","notes":"" + notes + "","owner":"" + owner + "","id":"" + id + "","pet_image":"" + pet_image + ""}";
return str.getBytes();
}
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
// params.put("email",email);
// params.put("password",password);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
} catch (Exception e) {
//App.handleUncaughtException(e);
}
progressDialog.dismiss();
}
public void getDataResponse1(String result) {
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setCancelable(false);
progressDialog.setMessage("Please Wait.....");
progressDialog.show();
try {
JSONObject jsonObject = new JSONObject(result);
Log.i("Check", result);
JSONObject current = jsonObject.getJSONObject(result);
String message = current.getString("message");
String name = jsonObject.isNull("name") ? null : jsonObject.getString("name");
String age = jsonObject.isNull("age") ? null : jsonObject.getString("age");
String gender = jsonObject.isNull("gender") ? null : jsonObject.getString("gender");
String notes = jsonObject.isNull("notes") ? null : jsonObject.getString("notes");
String color = jsonObject.isNull("color") ? null : jsonObject.getString("color");
// String android_status=jsonObject.getString("android_status");
if (message.equals("Pet was updated.")) {
Toast.makeText(this, "" + message, Toast.LENGTH_SHORT).show();
// updatedetails(name, age, gender, color, notes, String.valueOf(owner), String.valueOf(id), pet_image);
} else {
Toast.makeText(this, "" + message, Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
progressDialog.dismiss();
}
private void selectImage(Context context) {
final CharSequence[] options = {"Take Photo", "Choose from Gallery", "Cancel"};
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Choose your profile picture");
builder.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
if (options[item].equals("Take Photo")) {
Intent takePicture = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePicture, 0);
} else if (options[item].equals("Choose from Gallery")) {
Intent pickPhoto = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(pickPhoto, 1);
} else if (options[item].equals("Cancel")) {
dialog.dismiss();
}
}
});
builder.show();
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_CANCELED) {
switch (requestCode) {
case 0:
if (resultCode == RESULT_OK && data != null) {
bitmap = (Bitmap) data.getExtras().get("data");