当前位置: 首页 > 面试题库 >

Java中带有HTTPClient的GZip POST请求

柴丰
2023-03-14
问题内容

我需要将POST请求发送到包含gzip压缩请求参数的Web服务器。我使用的是Apache
HttpClient,我已经读到它支持开箱即用的Gzip,但是我找不到任何有关如何做我需要的示例。如果有人可以发布一些示例,我将不胜感激。


问题答案:

您需要先将其String转换为gzip
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"));


 类似资料:
  • 是否可以将SSL代理与Java HttpClient(或任何其他客户端)一起使用? 我真正的问题是有一个直接的SSL代理来发送HTTP或HTTPS连接并检查SSL代理和客户端证书。 例如,对于HTTP请求(我们检查客户端上的SSL代理证书,以及代理上的客户端证书): 客户端---SSL套接字(HTTPS)--- 对于HTTPS请求(使用CONNECT request来隧道SSL连接)(我们检查客户

  • 我在: > http://developer.yahoo.com/blogs/ydn/important-api-updates-changes-8060.html http://developer.yahoo.com/boss/search/ http://tech.groups.yahoo.com/group/ysearchboss/msearch?query=http要求 http://de

  • 我正在创建一个数据下载程序,自从使用httpClient以来,它一直给我带来问题 此代码将所需的所有变量附加到URL: } 每当我调用openSession时,它都会以一种简单的方式打印出标题(这正是我需要它做的)。。。 这打印了一个单行,但当我提出另一个打印长行的请求时,它总是带来这个错误: 这是第二个出现错误的请求: 我在currencyPairsRequest()中是否做错了什么?谢谢你花时

  • 我正试图通过新的Java11HttpClient取消http请求。 这是我的测试代码: 我预计,该请求任务将在 行调用后立即被取消。因此,控制台中最后打印的行应该是 但是,当我运行这段代码时,我看到类似这样的内容: 这意味着,在我取消请求后,请求任务仍在运行…所以,这是取消请求的正确方法吗? UPD 取消请求的正确方法是(正如daniel所建议的,UPD2:在方法调用中避免NPE):

  • 目前面临的问题是,对Azure Search API的请求返回“未知错误”。 我拿到了request在postman中工作,并认为在Angular中使用Http客户端在理论上是相同的设置。 错误消息: 错误HttpErrorResponse 邮差回应: 还有一个错误: 预飞响应无效(重定向)

  • 我需要一个java程序来生成以下请求。我正在使用Apache HttpClient Library,但仍然无法生成这样的请求: 这是我的python程序生成的,我编写了一个等效的java程序。但它扔403。 2012-09-10 15:12:05G信息:G2OAuth auth data=“3,0.0.0,0.0.0,1347289925,3223833979,crlakamai”2012-09-