HttpResponse.getEntity()的getContent()回報一切 ...包括響應頭,javascript代碼,響應體(當然!)等是否有一個可以剝離HTTP響應頭的函數?
是否有清理這件事,並提供了一個功能只有響應主體?
HttpResponse.getEntity()的getContent()回報一切 ...包括響應頭,javascript代碼,響應體(當然!)等是否有一個可以剝離HTTP響應頭的函數?
是否有清理這件事,並提供了一個功能只有響應主體?
您必須從InputStream讀取數據到緩衝區。搜索這個正則表達式:
\r\n\r\n(.*)
這會給你頭後的東西。
或者你可以用一個空字符串替換它,如果你正在尋找:
^.*?\r\n\r\n
可以過濾掉使用的是Android用自己的方法模式。傳遞字符串,並應用模式過濾器來刪除你不想要的東西。
public String filter(String searchString)
{
String content = searchString;
// Remove the new line characters.
Pattern newLineChar = Pattern.compile("\n+");
Matcher mLine = newLineChar.matcher(content);
while (mLine.find())
content = mLine.replaceAll("");
// Return the clean content
return content;
}
你的模式可能會變得非常複雜,並且幾乎不需要過濾任何表達式。 (你可能需要使用正則表達式等)。上面的例子用一個長度爲0的字符串替換一個新行(\ n),從字符串中刪除所有這些行。你可以建立模式,或者你可以再次迭代去除別的東西。
您還需要爲這幾個進口的工作:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
我試過你的代碼。我編譯,但由於某種原因無法按預期工作。你確定代碼中沒有錯誤嗎? – 2011-03-04 20:16:02
我想我現在明白你的意思了:你只提供這個例子(剝離換行符,而不是響應頭)。用於識別整個響應頭並將其替換爲空字符串的正則表達式應該是不同的,對吧? – 2011-03-04 20:30:20
@Regex新秀,是的,這只是一個例子,並不是一個詳盡的方法。正則表達式將是不同的是 – 2011-03-10 11:11:54
正則表達式爲 「\ r \ n \ r \ n(*)」 不找到原始的HttpResponse任何比賽。 getEntity()。getContent()(當然放入InputStream)。任何想法爲什麼? – 2011-03-04 20:17:46
但「()(。+)」起作用。我現在要去檢查一下爲什麼以及這意味着什麼。 – 2011-03-04 20:32:05
我想我發現了我的困惑:原始HttpResponse.getEntity()。getContent()以** <!doctype html> **開頭,這意味着它已經是響應主體。我可能有時會失明... – 2011-03-04 20:36:44