5 回答

TA貢獻(xiàn)1836條經(jīng)驗 獲得超13個贊
// 使用HttpClient發(fā)送請求、接收響應(yīng)很簡單,一般需要如下幾步即可。
// 1. 創(chuàng)建HttpClient對象。
// 2. 創(chuàng)建請求方法的實(shí)例,并指定請求URL。如果需要發(fā)送GET請求,創(chuàng)建HttpGet對象;如果需要發(fā)送POST請求,創(chuàng)建HttpPost對象。
// 3. 如果需要發(fā)送請求參數(shù),可調(diào)用HttpGet、HttpPost共同的setParams(HetpParams params)方法來添加請求參數(shù);對于HttpPost對象而言,也可調(diào)用setEntity(HttpEntity entity)方法來設(shè)置請求參數(shù)。
// 4. 調(diào)用HttpClient對象的execute(HttpUriRequest request)發(fā)送請求,該方法返回一個HttpResponse。
// 5. 調(diào)用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可獲取服務(wù)器的響應(yīng)頭;調(diào)用HttpResponse的getEntity()方法可獲取HttpEntity對象,該對象包裝了服務(wù)器的響應(yīng)內(nèi)容。程序可通過該對象獲取服務(wù)器的響應(yīng)內(nèi)容。
// 6. 釋放連接。無論執(zhí)行方法是否成功,都必須釋放連接
//入口函數(shù)
public static void main(String[] args) throws Exception {
??????? //cookie存儲類
??????? BasicCookieStore cookieStore = new BasicCookieStore();
??????? //創(chuàng)建一個httpclient,并設(shè)置默認(rèn)cookie存儲cookieStore
??????? CloseableHttpClient httpclient = HttpClients.custom()
??????????????? .setDefaultCookieStore(cookieStore)
??????????????? .build();
??????? try {
??????????? //創(chuàng)建HttpGet對象,需要發(fā)送GET請求https://someportal/
??????????? HttpGet httpget = new HttpGet("https://someportal/");
??????????? //HttpClient對象的execute(HttpUriRequest request)發(fā)送請求
??????????? CloseableHttpResponse response1 = httpclient.execute(httpget);
??????????? //try開始,試圖執(zhí)行
??????????? try {
??????????????? //獲取服務(wù)器返回的HttpEntity對象
??????????????? HttpEntity entity = response1.getEntity();
??????????????? //打印返回信息,response.getStatusLine().getStatusCode()==200鏈接成功,==500失敗。
??????????????? System.out.println("Login form get: " + response1.getStatusLine());
??????????????? //HttpEntity對象提供的靜態(tài)幫助類,EntityUtils.consume關(guān)閉資源
??????????????? EntityUtils.consume(entity);
??????????????? //打印Initial set of cookies:
??????????????? System.out.println("Initial set of cookies:");
??????????????? //獲取Cookies并循環(huán),空的輸出None,否則輸出cookie
??????????????? List<Cookie> cookies = cookieStore.getCookies();
??????????????? if (cookies.isEmpty()) {
??????????????????? System.out.println("None");
??????????????? } else {
??????????????????? for (int i = 0; i < cookies.size(); i++) {
??????????????????????? System.out.println("- " + cookies.get(i).toString());
??????????????????? }
??????????????? }
??????????? } finally {
??????????????? //關(guān)閉
??????????????? response1.close();
??????????? }
??????????? //POST請求,并設(shè)置URI和參數(shù)
??????????? HttpUriRequest login = RequestBuilder.post()
??????????????????? .setUri(new URI("https://someportal/"))
??????????????????? .addParameter("IDToken1", "username")
??????????????????? .addParameter("IDToken2", "password")
??????????????????? .build();
??????????? //執(zhí)行POST請求
??????????? CloseableHttpResponse response2 = httpclient.execute(login);
??????????? try {
??????????????? //獲取實(shí)體對象
??????????????? HttpEntity entity = response2.getEntity();
??????????????? //打印服務(wù)器返回信息
??????????????? System.out.println("Login form get: " + response2.getStatusLine());
??????????????? //關(guān)閉流
??????????????? EntityUtils.consume(entity);
??????????????? //打印cookie
??????????????? System.out.println("Post logon cookies:");
??????????????? List<Cookie> cookies = cookieStore.getCookies();
??????????????? if (cookies.isEmpty()) {
??????????????????? System.out.println("None");
??????????????? } else {
??????????????????? for (int i = 0; i < cookies.size(); i++) {
??????????????????????? System.out.println("- " + cookies.get(i).toString());
??????????????????? }
??????????????? }
??????????? } finally {
??????????????? response2.close();
??????????? }
??????? } finally {
??????????? //關(guān)閉httpclient
??????????? httpclient.close();
??????? }
??? }

TA貢獻(xiàn)1817條經(jīng)驗 獲得超6個贊
public static void main(String [] args){拋出異常
basiccookiestore =新basiccookiestore()存儲機(jī)制;
closeablehttpclient HttpClient = httpclients custom()。
setdefaultcookiestore(存儲機(jī)制)。
build();
嘗試{
HttpGet HttpGet =新HttpGet(“https:/ / someportal /”);
closeablehttpresponse response1 = HttpClient執(zhí)行(HTTPGET);
嘗試{
HttpEntity實(shí)體= response1 getentity();
系統(tǒng)。了。println(“登錄形式得到:“+ response1 getstatusline()。);
entityutils消耗(實(shí)體);
系統(tǒng)。了。println(“初始設(shè)定的餅干:“);
列表<餅干>餅干= getcookies()存儲機(jī)制;
如果(餅干。isempty()){
系統(tǒng)。了println(“無”);
{ }
為(int i = 0;i <餅干。size();i++){
系統(tǒng)。了。println(“-”+餅干。讓(我)。tostring());
}
}
最后{
response1();
}
httpurirequest登錄= requestbuilder post()。
seturi。(新的URI(“http:/ / someportal /”))
addparameter。(“idtoken1”,“用戶名”)
addparameter。(“idtoken2”,“密碼”)
build();
closeablehttpresponse反應(yīng)= HttpClient執(zhí)行(登錄);
嘗試{
HttpEntity實(shí)體=反應(yīng)。getentity();
系統(tǒng)。了。println(“登錄形式得到:“+反應(yīng)。getstatusline());
entityutils消耗(實(shí)體);
系統(tǒng)。了。println(“后登錄餅干:”);
列表<餅干>餅干= getcookies()存儲機(jī)制;
如果(餅干。isempty()){
系統(tǒng)。了println(“無”);
{ }
為(int i = 0;i <餅干。size();i++){
系統(tǒng)。了。println(“-”+餅干。讓(我)。tostring());
}
}
最后{
反應(yīng)。();
}
最后{
HttpClient();
}
}
添加回答
舉報