Je dispose d'un service REST que je ne peux pas modifier, avec des méthodes de chargement d'une image codée en tant que chaîne Base64.Création de requêtes REST volumineuses
Le problème est que les images peuvent aller jusqu'à des tailles de 5-10 Mo, peut-être plus. Lorsque j'essaie de construire une représentation Base64 d'une image de cette taille sur le périphérique, j'obtiens une exception OutOfMemory.
Je peux cependant encoder des morceaux d'octets à la fois (3000, disons), mais cela est inutile que je aurais besoin toute la chaîne pour créer un objet HttpGet/HttpPost:
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("www.server.com/longString");
HttpResponse response = client.execute(httpGet);
est-il un moyen de contourner cela?
Edit: en essayant d'utiliser les suggestions de Heiko Rupp + le doc android, je reçois une exception ("java.io.FileNotFoundException: http://www.google.com") à la ligne suivante: InputStream in = urlConnection.getInputStream();
try {
URL url = new URL("http://www.google.com");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setChunkedStreamingMode(0);
OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());
out.write("/translate".getBytes());
InputStream in = urlConnection.getInputStream();
BufferedReader r = new BufferedReader(new InputStreamReader(in));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
total.append(line);
}
System.out.println("response:" + total);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Ai-je raté quelque chose? La requête GET que j'ai besoin d'exécuter ressemble à ceci: "http://myRESTService.com/myMethod?params=LOOONG-String", donc l'idée était de se connecter à http://myRESTService.com/myMethod et affiche ensuite quelques caractères de la longue chaîne à la fois. Est-ce correct?
vous devez indiquer au service d'utiliser mettre ou poster par ex. via con.setMethod ("POST") –