这段代码演示如何将一个 HttpRequestBase
的请求体 body(如果有),转入到一个 String 中。
public static String getRequestBody(HttpRequestBase request) {
if (request instanceof HttpEntityEnclosingRequest) {
// 有些 request 是不带 body 的,比如 HTTP GET 请求;
// 如果 request 实现了 HttpEntityEnclosingRequest,说明它是 POST / PATCH / PUT / DELETE 请求,这类请求可以带请求体
HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity();
// HttpEntity 是一个 InputStream。如果它不是 repeatable 的,它无法被重复消费,那么大部分情况下不应该调用 EntityUtils.toString 去消费它
if (entity.isRepeatable()) {
return EntityUtils.toString(entity);
}
}
}