我有一个无法更改的 REST 服务,其中包含上传图像的方法,编码为 Base64 字符串。
问题是图像的大小可以达到 5-10MB,甚至更多。当我尝试在设备上构建这种大小的图像的 Base64 表示时,我得到了 OutOfMemory 异常。
但是,我可以一次编码字节块(比如说 3000 个),但这没用,因为我需要整个字符串来创建一个 HttpGet/HttpPost 对象:
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("www.server.com/longString");
HttpResponse response = client.execute(httpGet);
有没有办法解决这个问题?
编辑:尝试使用 Heiko Rupp 的建议 + android 文档,我在以下行出现异常(“java.io.FileNotFoundException: http ://www.google.com”): 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();
}
我错过了什么吗?我需要执行的 GET 请求如下所示:“ http://myRESTService.com/myMethod?params=LOOONG-String ”,所以想法是连接到http://myRESTService.com/myMethod然后输出一个一次长字符串的几个字符。这个对吗?