简体   繁体   English

org.json.JSONException:值

[英]org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject (Andriod Studio)

I'm trying to get an android app developed in Android studio to send data from a Register user activity to a database. 我正在尝试在Android Studio中开发一个android应用程序,以将数据从Register用户活动发送到数据库。 The idea is once the user types in all the required information and clicks the register button the data should go to a database and the Login activity should re-appear. 这个想法是,一旦用户输入了所有必需的信息并单击注册按钮,数据就应该进入数据库,并且登录活动应该重新出现。 However, when I click on the register button on the Register user activity nothing is happening, no redirection to Login activity or data being sent to database. 但是,当我单击“ 注册”用户活动上的“注册”按钮时,没有任何反应,也没有重定向到“ 登录”活动或将数据发送到数据库。

Below is my Register user activity code: 以下是我的注册用户活动代码:

package com.example.vi5h.split;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;

public class RegisterUserActivity extends AppCompatActivity {

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

    final EditText etFullName = (EditText) findViewById(R.id.etFullName);
    final EditText etUsername = (EditText) findViewById(R.id.etUsername);
    final EditText etPassword = (EditText) findViewById(R.id.etPassword);
    final EditText etEmail = (EditText) findViewById(R.id.etEmail);
    final Button btnRegister = (Button) findViewById(R.id.btnRegister);

    btnRegister.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            final String name = etFullName.getText().toString();
            final String username = etUsername.getText().toString();
            final String password = etPassword.getText().toString();
            final String email = etEmail.getText().toString();

            Response.Listener<String> responseListener = new Response.Listener<String>(){

                @Override
                public void onResponse(String response) {


                    try {
                        JSONObject jsonResponse = new JSONObject(response);
                        boolean success = jsonResponse.getBoolean("success");

                        if (success){
                            Intent intent = new Intent(RegisterUserActivity.this, LoginActivity.class);
                            RegisterUserActivity.this.startActivity(intent);

                        }else {
                            AlertDialog.Builder builder = new AlertDialog.Builder(RegisterUserActivity.this);
                            builder.setMessage("Register Failed")
                                    .setNegativeButton("Retry", null)
                                    .create()
                                    .show();
                        }


                    } catch (JSONException e) {
                        e.printStackTrace();
                    }


                }
            };


            RegisterRequest registerRequest = new RegisterRequest(name, username, email, password, responseListener);
            RequestQueue queue = Volley.newRequestQueue(RegisterUserActivity.this);
            queue.add(registerRequest);


        }
    });



}
}

Below is my Register request class code: 以下是我的注册请求类代码:

package com.example.vi5h.split;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;
import java.util.HashMap;
import java.util.Map;


public class RegisterRequest extends StringRequest {

private static final String REGISTER_REQUEST_URL = "https://split.000webhostapp.com/Register.php";
private Map<String, String> params;

public RegisterRequest(String name, String username, String email, String password, Response.Listener<String> listener)
{

    super(Method.POST, REGISTER_REQUEST_URL, listener, null);
    params = new HashMap<>();
    params.put("name", name);
    params.put("username", username);
    params.put("email", email);
    params.put("password", password);
}


@Override
public Map<String, String> getParams() {
    return params;
}
}

Below is my PHP script (Register.php): 以下是我的PHP脚本 (Register.php):

<?php
$con = mysqli_connect("localhost", "id2833909_split421", "pass321", "id2833909_splitw");

$name = $_POST["name"];
$email = $_POST["email"];
$username = $_POST["username"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "INSERT INTO user (name, username, email, password) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($statement, "siss", $name, $username, $email, $password);
mysqli_stmt_execute($statement);

$response = array();
$response["success"] = true;  

echo json_encode($response);
?>

And finnally below is the error thrown on Logcat after I tapped the Register button: https://imgur.com/b8x0Su6 最后,下面是我点击“ 注册”按钮后在Logcat上引发的错误: https://imgur.com/b8x0Su6 ://imgur.com/b8x0Su6

If you visit https://split.000webhostapp.com/Register.php in a Web browser, you get back broken content. 如果在Web浏览器中访问https://split.000webhostapp.com/Register.php ,您将获得损坏的内容。 It is not a complete Web page, but instead is a bunch of error messages: 它不是一个完整的网页,而是一堆错误消息:

<br />
<b>Notice</b>:  Undefined index: name in <b>/storage/ssd5/909/2833909/public_html/Register.php</b> on line <b>4</b><br />
<br />
<b>Notice</b>:  Undefined index: email in <b>/storage/ssd5/909/2833909/public_html/Register.php</b> on line <b>5</b><br />
<br />
<b>Notice</b>:  Undefined index: username in <b>/storage/ssd5/909/2833909/public_html/Register.php</b> on line <b>6</b><br />
<br />
<b>Notice</b>:  Undefined index: password in <b>/storage/ssd5/909/2833909/public_html/Register.php</b> on line <b>7</b><br />
<br />
<b>Warning</b>:  mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in <b>/storage/ssd5/909/2833909/public_html/Register.php</b> on line <b>9</b><br />
<br />
<b>Warning</b>:  mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in <b>/storage/ssd5/909/2833909/public_html/Register.php</b> on line <b>10</b><br />
{"success":true}

The first three characters of that response are <br . 该响应的前三个字符是<br Those happen to be the first three characters that the JSON parser is complaining about in your error message. 这些恰好是JSON解析器在您的错误消息中抱怨的前三个字符。 So, my guess is that the Web server is sending back the same sort of broken content in response to your Volley request. 因此,我的猜测是Web服务器正在响应您的Volley请求发送回相同类型的损坏内容。

So, take a look at response and see what you are getting as plain text. 因此,请看一下response ,看看您得到的是纯文本。 Then, fix whatever problem the response indicates. 然后,修复response指示的任何问题。

Android Studio org.json.JSONException:值<br of type java.lang.String cannot be converted to JSONObject< div><div id="text_translate"><p> 我正在尝试使用 volley 将一些数据发布到服务器。</p><p> 问题似乎与编码的字符串图像有关。</p><p> 在这条线上</p><pre> 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);</pre><p> 如果我将图像更改为空字符串</p><pre> updatedetails(name, age, gender, color, notes, String.valueOf(owner), String.valueOf(id), "");</pre><p> 然后比数据发送到服务器,这就是我知道图像是问题的方式。</p><p> 我记录了图像响应,这就是我得到的:</p><pre> 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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</pre><p> 而其他数据响应正常,例如:</p><pre> Strings: red</pre><p> logcat 说问题出在这里:</p><pre> try { JSONObject jsonObject = new JSONObject(result); Log.i("Check", result);</pre><p> 以下是相关代码:</p><pre> 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&lt;String&gt;() { @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&lt;String, String&gt; getParams() { Map&lt;String, String&gt; params = new HashMap&lt;String, String&gt;(); // 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 &amp;&amp; data.= null) { bitmap = (Bitmap) data;getExtras().get("data"); profilepic;setImageBitmap(bitmap); encodeImage(bitmap): } break. case 1. if (resultCode == RESULT_OK) { bitmap = (Bitmap) data;getExtras().get("data"); Uri selectedImage = data.getData(); try { InputStream inputStream = getContentResolver().openInputStream(selectedImage); bitmap = BitmapFactory.decodeStream(inputStream); profilepic;setImageBitmap(bitmap). encodeImage(bitmap); // Glide.clear(profilepic). } catch (FileNotFoundException e) { Toast,makeText(update,this. "Pet added succesfully". Toast;LENGTH_SHORT);show(); } break. } } } } public String encodeImage(Bitmap bitmap) { ByteArrayOutputStream ba = new ByteArrayOutputStream(). bitmap.compress(Bitmap,CompressFormat,JPEG; 100. ba); byte[] imagebyte = ba.toByteArray(). encode = android.util,Base64.encodeToString(imagebyte; Base64;DEFAULT); return encode; }</pre><p> 然后我提交的地方:</p><pre> updatebutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { 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); Log.d("Strings",images ); Log.d("Strings",color );</pre></div> - Android Studio org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android Studio org.json.JSONException:值<br of type java.lang.String cannot be converted to JSONObject< div><div id="text_translate"><p> 我正在尝试使用 volley 将一些数据发布到服务器。</p><p> 问题似乎与编码的字符串图像有关。</p><p> 在这条线上</p><pre> 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);</pre><p> 如果我将图像更改为空字符串</p><pre> updatedetails(name, age, gender, color, notes, String.valueOf(owner), String.valueOf(id), "");</pre><p> 然后比数据发送到服务器,这就是我知道图像是问题的方式。</p><p> 我记录了图像响应,这就是我得到的:</p><pre> 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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</pre><p> 而其他数据响应正常,例如:</p><pre> Strings: red</pre><p> logcat 说问题出在这里:</p><pre> try { JSONObject jsonObject = new JSONObject(result); Log.i("Check", result);</pre><p> 以下是相关代码:</p><pre> 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&lt;String&gt;() { @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&lt;String, String&gt; getParams() { Map&lt;String, String&gt; params = new HashMap&lt;String, String&gt;(); // 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 &amp;&amp; data.= null) { bitmap = (Bitmap) data;getExtras().get("data"); profilepic;setImageBitmap(bitmap); encodeImage(bitmap): } break. case 1. if (resultCode == RESULT_OK) { bitmap = (Bitmap) data;getExtras().get("data"); Uri selectedImage = data.getData(); try { InputStream inputStream = getContentResolver().openInputStream(selectedImage); bitmap = BitmapFactory.decodeStream(inputStream); profilepic;setImageBitmap(bitmap). encodeImage(bitmap); // Glide.clear(profilepic). } catch (FileNotFoundException e) { Toast,makeText(update,this. "Pet added succesfully". Toast;LENGTH_SHORT);show(); } break. } } } } public String encodeImage(Bitmap bitmap) { ByteArrayOutputStream ba = new ByteArrayOutputStream(). bitmap.compress(Bitmap,CompressFormat,JPEG; 100. ba); byte[] imagebyte = ba.toByteArray(). encode = android.util,Base64.encodeToString(imagebyte; Base64;DEFAULT); return encode; }</pre><p> 然后我提交的地方:</p><pre> updatebutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { 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); Log.d("Strings",images ); Log.d("Strings",color );</pre></div> - Android Studio org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject 错误。 org.json.JSONException:值 - error. org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject 遇到“ org.json.JSONException:值 - encountered “org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject” volley.parsererror:org.json.JSONException:类型java.lang.string的值br不能转换为JSONObject - volley.parsererror:org.json.JSONException: value br of type java.lang.string cannot be converted to JSONObject Volley 的 JsonObjectRequest 给出“org.json.JSONException: Value - Volley's JsonObjectRequest gives "org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject" exception Volley的JsonObjectRequest提供了“ org.json.JSONException:值 - Volley's JsonObjectRequest gives “org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject” exception W / System.err:org.json.JSONException:值 - W/System.err: org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject 解析数据org.json.JSONException时出错:值<br> - Error parsing data org.json.JSONException: Value <br><table of type java.lang.String cannot be converted to JSONObject 解析org.json.jsonexception值 - parsing org.json.jsonexception value <br type java.lang.String cannot be converted to JSONOobject org.json.JSONException:值<html><body> - org.json.JSONException: Value <html><body><script of type java.lang.String cannot be converted to JSONObject
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM