I am trying to pull an base64 encoded image from my app to database(which is in my server), but I get this error.
the server responded with a status of 414 (Request-URI Too Long)
I know that for URLs, shortening them fixes the error but I can't shorten a base64 string.
How to fix this one.
HttpGet httpGet = new HttpGet(URL);
try {
HttpResponse response = httpClient.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream inputStream = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
inputStream.close();
} else {
Log.d("JSON", "Failed to download file");
}
}
First off, if this is true:
you should change
to
Sending from your app to the database is uploading, not downloading.
Because you're uploading, you should not use a
HTTPGet
request, but aHTTPPost
request. The difference is that GET is made for downloading, while POST is made for uploading. Therefore POST is allowed to have a body.A body is the actual content of the message. Right now it seems like you're encoding the image in the request, which is not considered good practice. You already ran into the problems it creates. Because you're using a body you will have to change your server-side application.
For sending a body, take a look at how to make httpPost call with json encoded body?. This question is specifically about using a JSON body, but you could use it anyways.
Try Retrofit. Use @FormUrlEncoded in retrofit and @POST("ur_api_name") and send the data using @Field("data") annotation.