Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 正在将Base64编码图像上载到服务器-400服务器错误_Android_Image_Encoding_Base64 - Fatal编程技术网

Android 正在将Base64编码图像上载到服务器-400服务器错误

Android 正在将Base64编码图像上载到服务器-400服务器错误,android,image,encoding,base64,Android,Image,Encoding,Base64,我正在使用截取将Base64编码的图像上传到JSON有效负载。此返回位于com.android.volley.ServerError和状态代码400。我将图像编码如下: var imageEncoded = "" try { val bitmap = MediaStore.Images.Media.getBitmap(context?.contentResolver, uri) //val bitmap =

我正在使用截取将Base64编码的图像上传到JSON有效负载。此返回位于com.android.volley.ServerError状态代码400。我将图像编码如下:

var imageEncoded = ""
            try {
                val bitmap = MediaStore.Images.Media.getBitmap(context?.contentResolver, uri)
                //val bitmap = BitmapFactory.decodeFile(path)
                val stream = ByteArrayOutputStream()
                bitmap.compress(Bitmap.CompressFormat.JPEG, 70, stream)
                val imageBytes = stream.toByteArray()
                imageEncoded = Base64.encodeToString(imageBytes, Base64.DEFAULT)
            } catch (e: Exception) {
                e.printStackTrace()
            }
我已经检查了几个问题,但没有运气。下面是我正在使用的截击方法:

public static void volleyRowJsonPostRequest(Context context,String url, JSONObject object,final Map<String, String> headers, final VolleyTaskListener taskListener) {
        final JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST, url, object,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            taskListener.onTaskComplete(response.toString());
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        NetworkResponse networkResponse = error.networkResponse;
                        if (networkResponse != null)
                            taskListener.onTaskFailed(networkResponse.statusCode);

                    }
                }
        ){
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                return headers;
            }
        };

        jsObjRequest.setRetryPolicy(new DefaultRetryPolicy(
                60000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        jsObjRequest.setShouldCache(false);
        Volley.newRequestQueue(context).add(jsObjRequest);
    }

我刚刚将Base64编码方法更新为
Base64.encodeToString(imageBytes,Base64.DEFAULT)
Base64.encodeToString(imageBytes,Base64.NO_WRAP)
,就修复了这个错误。使用Base64.DEFAULT生成的编码字符串是编码器标志(包括换行符)的默认值Base64。无换行编码器标志位以省略所有行终止符(即,输出将在一条长行上)。更多信息。

HTTP状态400是一个。你是如何向服务器发出请求的?@Michael,我正在上传POST请求中的JSON。这是在RESTAPI客户机上工作的(比如:RESTAPI客户机)。更多信息:但是如何?(即,发布你的截击代码)你发送的请求格式不正确,服务器无法解析。你应该检查你的网站services@Michael,我已在问题中加入所需的详细资料。
{
  "subject": "some test value",
  "mailboxId": 170715,
  "type": "email",
  "status": "active",
  "customer": {
    "email": "mymailaddress@mail.com"
  },
  "threads": [
    {
      "type": "customer",
      "text": "some test value",
      "customer": {
        "email": "mymailaddress@mail.com"
      },
      "attachments": [
        {
          "fileName": "Screenshot_20181005-160109.png",
          "mimeType": "image\/png",
          "data": "base64 encoded string goes here"
        }
      ]
    }
  ],
  "tags": [
    "Swytch",
    "Help"
  ]

}