这是我在服务器上上传图像的第一个Android应用程序。我使用okhttp3库将base64编码的字符串发送到服务器。
在我发送这个编码的字符串之前,我在logcat中打印它并通过在线base64解码到图像转换器并获得相同的图像但是当我将这个字符串转换为JSON字符串时,我只能看到部分base64编码的字符串。 / p>
我试图在互联网上找到这个答案,但没有得到任何解决方案。
这是我的代码,
class Background extends AsyncTask<String,String,String> {
//getting base64 encoded string from Main Activity
String encoded_string = new MainActivity().encoded_string;
String image_name="Hello.jpg";
Context context;
String TAG = "Background";
Background(Context c) {
context=c;
}
@Override
protected String doInBackground(String... params) {
Log.d(TAG, "doInBackground: "+encoded_string); // Here I can see complete base64 encoded string
JSONObject jsonObject=new JSONObject();
String jsonString=null;
try {
jsonObject.put("image_name",image_name);
jsonObject.put("encoded_string",encoded_string);
jsonString=jsonObject.toString();
} catch (JSONException e) {
e.printStackTrace();
}
Log.d(TAG, "doInBackground: "+jsonString); // But here I am getting partial encoded string in JSON.
OkHttpClient okHttpClient=new OkHttpClient();
RequestBody requestBody= new FormBody.Builder()
.add("jsonString",jsonString)
.build();
Request request=new Request.Builder()
.url("https://b1b8540f.ngrok.io/feedthecow/uploadImage.php")
.post(requestBody)
.build();
String responseIntoString=null;
try {
Response response=okHttpClient.newCall(request).execute();
responseIntoString=response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return responseIntoString;
}
}