【问题标题】:Getting JSON exception while uploading上传时出现 JSON 异常
【发布时间】: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 对象/数组吗?
  • 响应字符串的值是多少

标签: android json web-services


【解决方案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 响应=
      猜你喜欢
      • 2013-05-30
      • 2012-05-13
      • 2021-12-25
      • 2015-06-03
      • 2018-08-11
      • 2011-09-17
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多