2015-06-04 46 views
0

我做我的REST API,我看到了很多的例子人使用EntityUtils.toString(response)從他們GETPOSTPUTDELETE方法得到他們的responseString。與此相似:究竟返回EntityUtils.toString(響應)?

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

請避免地對我說,它給我這個字符串

我知道,它返回到我String與實體的內容(在這種情況下解答答案),但這裏是我的疑慮來了,因爲我不知道這String返回。我把它看成官方文檔。

讀取實體的內容並將其作爲字符串返回。

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

這是什麼content-typeString回來了?

恰恰相反,我用我的方法得到的值是什麼在String中返回?

我認爲這是第二個問題,但我對此並不確定。而且,在這種情況下,如何將這些值存儲到String?他們是通過昏迷還是一些特殊的角色分開的?

提前致謝!

回答

1

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> 
+0

所以,字符串忽略HTTP響應的報頭?只是裏面的值? –

+0

@ Error404 HTTP響應具有狀態行,標題列表和正文。 「HttpEntity」的內容就是HTTP響應的主體。 –

+0

所以我想'Content-type'和'Content-Length'是標題和'HTTP/1.1 200 OK'的狀態行,對吧?我很抱歉,但我真的很新。 –

0

謹防EntityUtils.toString的默認字符集:

使用提供的默認值將實體內容作爲字符串獲取如果在實體中未找到任何字符集。如果defaultCharset爲 null,則使用默認的「ISO-8859-1」。

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