1. 程式人生 > >使用HttpClient傳送帶body的GET請求

使用HttpClient傳送帶body的GET請求

有時候我們會有一些奇怪的需求,比如使用帶body的GET請求來請求資料,雖然HTTP協議裡並沒有禁止使用帶body的GET請求,但是一般我們並不使用這種請求格式,而且HttpClient本身並沒有定義帶body的GET請求。此時怎麼辦呢?

我們可以自己定義一個帶body的GET請求。首先,我們可以定義一個繼承了 HttpEntityEnclosingRequestBase 的 HttpGetWithEntity 類,設定其請求方法為 GET:

import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;

import
java.net.URI; public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase { private final static String METHOD_NAME = "GET"; @Override public String getMethod() { return METHOD_NAME; } public HttpGetWithEntity() { super(); } public HttpGetWithEntity
(final URI uri) { super(); setURI(uri); } HttpGetWithEntity(final String uri) { super(); setURI(URI.create(uri)); } }

然後,在呼叫時

HttpGetWithEntity oHttpGet = new HttpGetWithEntity(url);
HttpEntity httpEntity = new StringEntity(body, ContentType.APPLICATION_JSON);
oHttpGet.setEntity(httpEntity);

參考