EntityUtils.toString(response)具体返回什么?(这是一个关于IT技术的问题)

7

我正在进行API REST开发,我看到很多示例中人们使用EntityUtils.toString(response)从他们的GETPOSTPUTDELETE方法中获取response并将其转换为String。类似于这样:

HttpGet method = new HttpGet(url);
method.setHeader("content-type", "application/json");
HttpResponse response = httpClient.execute(method);
String responseString = EntityUtils.toString(response.getEntity());

请避免回答我返回字符串的答案

我知道它会将一个实体(在这种情况下是响应)的内容返回给我一个字符串,但这里就出现了我的疑惑,因为我不确定这个字符串返回的内容。我在官方文档中看到了它。

读取实体的内容并将其作为字符串返回。

https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/util/EntityUtils.html#toString(org.apache.http.HttpEntity,java.lang.String)

返回的是content-type吗?

相反,我使用我的方法得到的值是否是返回的String中的值?

我认为第二个问题是正确的,但我不确定。如果是这样的话,这些值如何存储在String中?它们由逗号或某些特殊字符分隔吗?

谢谢!

2个回答

6

HttpEntity代表HTTP响应体的内容。 EntityUtils.toString(HttpEntity)将该内容解释为String并返回给您。

如果您的HTTP响应类似于这样

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: 80

<?xml version="1.0" encoding="utf-8"?>
<root>
    <nested attr="whatever" />
</root>

当使用EntityUtils.toString(HttpEntity)时,返回的String将简单地包含

<?xml version="1.0" encoding="utf-8"?>
<root>
    <nested attr="whatever" />
</root>

那么,String忽略HTTP响应的头部?只处理其中的值? - Francisco Romero
@Error404 HTTP响应包含状态行、头列表和正文。HttpEntity的内容就是HTTP响应的正文。 - Sotirios Delimanolis
所以我认为Content-typeContent-Length是头部,而HTTP/1.1 200 OK则是状态行,是吗?对不起,我真的很新手。 - Francisco Romero

3

注意EntityUtils.toString的默认字符集:

使用提供的默认字符集将实体内容作为字符串获取,如果实体中没有找到字符集,则使用默认字符集。如果defaultCharset为空,则使用默认的“ISO-8859-1”。

org.apache.http.util.EntityUtils.toString(response.getEntity, "UTF-8");


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接