эта проблема была опубликована ранее, но, к сожалению, все ответы не решили мою проблему, мой API работает нормально в почтальоне, но я получаю непредвиденную ошибку с кодом 500 ответа при публикации в API, используя следующий код:
private void uploadPost(final String imageBase64) {
if(imageBase64 == null) return;
Toast.makeText(getApplicationContext(),":"+imageBase64.length(),Toast.LENGTH_LONG).show();
SharedPreferences sharedPreferences = getSharedPreferences(SHAREDPREFNAME, Context.MODE_PRIVATE);
final String textPost = ((EditText)findViewById(R.id.textPost)).getText().toString();
JSONObject jsonIduser = null;
String idUser = null;
try {
jsonIduser = new JSONObject(sharedPreferences.getString("currentUserInfo",null));
idUser = jsonIduser.getString("id");
} catch (JSONException e) {
e.printStackTrace();
}
RequestQueue requestQueue = Volley.newRequestQueue(this);
final String insertUrl = "http://192.168.101.1:8080/v1/create_post/";
final String finalIdUser = idUser;
final StringRequest stringRequest=new StringRequest(Request.Method.POST, insertUrl, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(),"ok",Toast.LENGTH_LONG).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),error.networkResponse.statusCode,Toast.LENGTH_LONG).show();
}
}){
@Override
public byte[] getBody() throws AuthFailureError {
// String str= MessageFormat.format("'{'\"idUser\": \"{0}\",\"textPost\" : \"{1}\",\"imagePost\" : \"{2}\",\"datePost\" : \"{3}\"'}'", finalIdUser, textPost, imageBase64, System.currentTimeMillis());
// String str="{\n" + "\"name\": \""+first+"\",\n" + "\"lastName\" : \"ahmed\",\n" + "\"email\" : \"hhhhhh\",\n" + "\"password\" :\"hhhhhhh\"\n" + " }";
String str= String.format("{\"idUser\": \"%s\",\"textPost\" : \"%s\",\"imagePost\" : \"%s\",\"datePost\" : \"%d\"}", finalIdUser, textPost, imageBase64, System.currentTimeMillis());
return str.getBytes();
}
@Override
public Map <String, String> getHeaders() throws AuthFailureError {
HashMap <String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}
};
System.out.println("volley:"+stringRequest.getUrl());
requestQueue.add(stringRequest);
}
NB 0: для бэкэнда, я использую весеннюю загрузку.
NB 1: imageBase64 - переменная, которая содержит данные base64 изображения, его длину более 70000 символов, странно, когда я перезаписал эту переменную (imageBase64) простыми строковыми данными, такими как «xxxxxx», в результате весь мой код работает нормально, и моя ошибка исчезла !!