gpt4 book ai didi

java - 使用 HttpResponseInterceptor 来操作响应

转载 作者:太空宇宙 更新时间:2023-11-04 08:06:05 24 4
gpt4 key购买 nike

使用 Apache HttpClient,可以通过添加 HttpResponseIntercepter 来操作检索到的内容。有了这个,添加 header 属性就变得非常容易。但是如何操作检索到的 HttpEntity 的内容呢?

例如,我喜欢将所有文本转换为大写。

@Test
public void shoudConvertEverythingToUpperCase() throws ClientProtocolException, IOException
{
final DefaultHttpClient defaultHttpClient = new DefaultHttpClient();

defaultHttpClient.addResponseInterceptor(new HttpResponseInterceptor() {

@Override
public void process(final HttpResponse response, final HttpContext context) throws HttpException, IOException
{
final HttpEntity entity = response.getEntity();

final HttpEntity upperCaseEntity = makeAllUppercase(entity);

response.setEntity(upperCaseEntity);
}

private HttpEntity makeAllUppercase(final HttpEntity entity)
{
// how to uppercase everything and return the cloned HttpEntity
return null;
}
});

final HttpResponse httpResponse = defaultHttpClient.execute(new HttpGet("http://stackoverflow.com"));

assertTrue(StringUtils.isAllUpperCase(EntityUtils.toString(httpResponse.getEntity())));
}

最佳答案

private HttpEntity makeAllUppercase(final HttpEntity entity)
{
Header h = entity.getContentType();
ContentType contentType = h != null ? ContentType.parse(h.getValue()) : ContentType.DEFAULT_TEXT;
String content = EntityUtils.toString(entity, contentType.getCharset());
return new StringEntity(content.toUpperCase(Locale.US), contentType);
}

由于内存中内容的中间缓冲,这不是最有效的,而是最简洁的实现。

关于java - 使用 HttpResponseInterceptor 来操作响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12076783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com