Android 正在将Base64编码图像上载到服务器-400服务器错误
我正在使用截取将Base64编码的图像上传到JSON有效负载。此返回位于com.android.volley.ServerError和状态代码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 =
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"
]
}