Вам нужно сначала превратить String
в сжатый byte[]
или (временный) File
. Давайте предположим, что это не очень большое значение String
, поэтому byte[]
достаточно безопасен для доступной памяти JVM:
String foo = "value";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (GZIPOutputStream gzos = new GZIPOutputStream(baos)) {
gzos.write(foo.getBytes("UTF-8"));
}
byte[] fooGzippedBytes = baos.toByteArray();
Затем вы можете отправить его как составное тело с помощью HttpClient следующим образом:
MultipartEntity entity = new MultipartEntity();
entity.addPart("foo", new InputStreamBody(new ByteArrayInputStream(fooGzippedBytes), "foo.txt"));
HttpPost post = new HttpPost("http://example.com/some");
post.setEntity(entity);
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(post);
// ...
Обратите внимание, что HttpClient 4.1 поддерживает новый ByteArrayBody
, который можно использовать следующим образом:
entity.addPart("foo", new ByteArrayBody(fooGzippedBytes, "foo.txt"));