上传时出现 JSON 异常

Posted

技术标签:

【中文标题】上传时出现 JSON 异常【英文标题】:Getting JSON exception while uploading 【发布时间】:2018-01-31 15:03:35 【问题描述】:

这是程序,但出现 JSON 异常。

private void uploadImage()

    String uploadUrl = "http://...........";
    StringRequest stringRequest = new StringRequest(Request.Method.POST, uploadUrl, new Response.Listener<String>() 
        @Override
        public void onResponse(String response) 
            try 
                JSONObject jsonObject = new JSONObject(response);
                String Response = jsonObject.getString("response");
                Toast.makeText(MainActivity.this,Response,Toast.LENGTH_SHORT).show();
                mImage.setImageResource(0);
                mImage.setVisibility(View.GONE);
                mName.setText("");
                mName.setVisibility(View.GONE);
             catch (JSONException e) 
                e.printStackTrace();
            
        
    , new Response.ErrorListener() 
        @Override
        public void onErrorResponse(VolleyError error) 

        
    )

    
        @Override
        protected Map<String, String> getParams() throws AuthFailureError 
            Map<String, String> params = new HashMap<>();
            params.put("photo_one",imageString(bitmap));
            params.put("mobile",mName.getText().toString().trim());

            return params;
        
    ;
    MySingleton.getInstance(MainActivity.this).addToRequestQue(stringRequest);


这是我遇到的错误。

org.json.JSONException: 在字符 0 处输入结束 at org.json.JSONTokener.syntaxError(JSONTokener.java:449) 在 org.json.JSONTokener.nextValue(JSONTokener.java:97) 在 org.json.JSONObject.(JSONObject.java:156) 在 org.json.JSONObject.(JSONObject.java:173) 在 com.example.athis.practiceproject4.MainActivity$1.onResponse(MainActivity.java:93)

JSONObject jsonObject = new JSONObject(response);线。 怎么了?

【问题讨论】:

检查您的回复。 您的回复有效吗?它是 json 对象/数组吗? 响应字符串的值是多少 【参考方案1】:

org.json.JSONException: 在字符 0 处输入结束

你得到一个空的响应。

【讨论】:

【参考方案2】:

检查您的响应是否为错误org.json.JSONException: End of input at character 0 of at 表示您的响应字符串为空或 0,请先检查您的响应字符串。

【讨论】:

【参考方案3】:

尝试使用下面的代码;

  HashMap<String, String> params = new HashMap<>();
  params.put("photo_one",imageString(bitmap));
  params.put("mobile",mName.getText().toString().trim());

    final ProgressDialog progressDialog = new ProgressDialog(LoginActivity.this);
    progressDialog.setMessage("Fetching Data....");
    progressDialog.show();

    JsonObjectRequest req = new JsonObjectRequest(uploadUrl, new JSONObject(params),
            new Response.Listener<JSONObject>() 
                @Override
                public void onResponse(JSONObject response) 
                    progressDialog.dismiss();

                    String success = (String) response.opt("success");
                    if (success.equals("1") )
                    

                        // Do your Task here....

                    
                    else
                    
                        Toast.makeText(getApplicationContext(),"Invalid Username & Password...",Toast.LENGTH_LONG).show();
                    
                
            , new Response.ErrorListener() 
        @Override
        public void onErrorResponse(VolleyError error) 

            progressDialog.dismiss();

        
    );
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(req);

【讨论】:

我应该在 // Do your Task here... 中写些什么?我只想上传一张图片和文字,我认为 params.put 已经完成了。 只需将 Toast 放在那里即可成功上传图片 获取 D/Volley:[46298] BasicNetwork.logSlowRequests:请求的 HTTP 响应=

以上是关于上传时出现 JSON 异常的主要内容,如果未能解决你的问题,请参考以下文章

尝试上传文件时出现异常

2021-12-16 使用MultipartFile上传文件时出现异常

2021-12-16 使用MultipartFile上传文件时出现异常

将 Jackson JSON 库与骆驼一起使用时出现异常

当我将 .appxupload 而不是 .appxbundle 上传到 HockeyApp 时出现序列化异常

使用 NSDictionary 访问 JSON 序列化时出现异常