Sto tentando di inviare immagini codificate Base64 su un server utilizzando HttpUrlConnection. Il problema che sto avendo è che la maggior parte delle immagini viene inviata con successo, tuttavia alcuni generano un'eccezione FileNotFound. Il mio codice per la codifica dell'immagine può essere trovato sotto.Invio dell'immagine codificata Base64 al server tramite HttpUrlConnection Android
public static String encodeImage(Bitmap thumbnail) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String imageEncoded = Base64.encodeToString(b,Base64.URL_SAFE);
return imageEncoded;
}
Quando cambio la linea:
String imageEncoded = Base64.encodeToString(b,Base64.URL_SAFE);
a:
String imageEncoded = Base64.encodeToString(b,Base64.DEFAULT);
quindi la maggior parte delle immagini generano un FileNotFoundException e un po 'viene inviato al server con successo.
sotto è il codice per il mio HttpURLConnection:
public class HttpManager {
public static String getData(RequestPackage p) {
BufferedReader reader = null;
String uri = p.getUri();
if (p.getMethod().equals("GET")) {
uri += "?" + p.getEncodedParams();
}
try {
URL url = new URL(uri);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod(p.getMethod());
if (p.getMethod().equals("POST")) {
con.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream());
writer.write(p.getEncodedParams()); //Url encoded parameters
writer.flush();
}
StringBuilder sb = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
}
}
Qualsiasi aiuto sarà apprezzato. Grazie
perché Base64? – pskink
Provare a ridurre la bitamp se la bitmap dell'immagine è più grande. –
infatti, il problema si trova sul lato server ... prolly, il server blocca richieste troppo grandi ... ancora non capisco perché non invii semplicemente binario ... – Selvin