假如有代码
HttpResponse httpResponse = HttpRequest.get("").send();
System.out.println(httpResponse.bodyText());
然后发现乱码了,这个时候你各种加charset("utf-8"),contentType啥的,你发现并没有效果
其实,我们可以看下bodyText的源码:
/**
* Returns {@link #body() body content} as text. If {@link #charset() charset parameter}
* of "Content-Type" header is defined, body string charset is converted, otherwise
* the same raw body content is returned. Never returns <code>null</code>.
*/
public String bodyText() {
if (body == null) {
return StringPool.EMPTY;
}
if (charset != null) {
return StringUtil.convertCharset(body, StringPool.ISO_8859_1, charset);
}
return body();
}
看到了吧,它会根据你的charset转换的!
那么为什么我们设置了charset没效果呢???
估计很多可怜的同学跟我一样,charset放到了request里面,所以没有效果。。。其实放到response里面就行了,代码如下:
HttpResponse httpResponse = HttpRequest.get("").send();
httpResponse.charset("utf-8");
System.out.println(httpResponse.bodyText());