激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - java中httpclient封裝post請(qǐng)求和get的請(qǐng)求實(shí)例

java中httpclient封裝post請(qǐng)求和get的請(qǐng)求實(shí)例

2022-03-06 00:45小碼哥(^_^) Java教程

這篇文章主要介紹了java中httpclient封裝post請(qǐng)求和get的請(qǐng)求實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

httpclient封裝post請(qǐng)求和get的請(qǐng)求

在我們程序員生涯中,經(jīng)常要復(fù)用代碼,所以我們應(yīng)該養(yǎng)成時(shí)常整理代碼的好習(xí)慣,以下是我之前封裝的

httpclient的post和get請(qǐng)求所用的代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
package com.marco.common;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;
/**
 * @author 馬弦
 * @date 2017年10月23日 下午2:49
 * HttpClient工具類
 */
public class HttpUtil {
    
    private static Logger logger = Logger.getLogger(HttpUtil.class);
 
    /**
     * get請(qǐng)求
     * @return
     */
    public static String doGet(String url) {
        try {
            HttpClient client = new DefaultHttpClient();
            //發(fā)送get請(qǐng)求
            HttpGet request = new HttpGet(url);
            HttpResponse response = client.execute(request);
 
            /**請(qǐng)求發(fā)送成功,并得到響應(yīng)**/
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                /**讀取服務(wù)器返回過(guò)來(lái)的json字符串?dāng)?shù)據(jù)**/
                String strResult = EntityUtils.toString(response.getEntity());
                
                return strResult;
            }
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        
        return null;
    }
    
    /**
     * post請(qǐng)求(用于key-value格式的參數(shù))
     * @param url
     * @param params
     * @return
     */
    public static String doPost(String url, Map params){
        
        BufferedReader in = null
        try
            // 定義HttpClient 
            HttpClient client = new DefaultHttpClient(); 
            // 實(shí)例化HTTP方法 
            HttpPost request = new HttpPost(); 
            request.setURI(new URI(url));
            
            //設(shè)置參數(shù)
            List<NameValuePair> nvps = new ArrayList<NameValuePair>();
            for (Iterator iter = params.keySet().iterator(); iter.hasNext();) {
                String name = (String) iter.next();
                String value = String.valueOf(params.get(name));
                nvps.add(new BasicNameValuePair(name, value));
                
                //System.out.println(name +"-"+value);
            }
            request.setEntity(new UrlEncodedFormEntity(nvps,HTTP.UTF_8));
            
            HttpResponse response = client.execute(request); 
            int code = response.getStatusLine().getStatusCode();
            if(code == 200){    //請(qǐng)求成功
                in = new BufferedReader(new InputStreamReader(response.getEntity() 
                        .getContent(),"utf-8"));
                StringBuffer sb = new StringBuffer(""); 
                String line = ""
                String NL = System.getProperty("line.separator"); 
                while ((line = in.readLine()) != null) { 
                    sb.append(line + NL); 
                }
                
                in.close(); 
                
                return sb.toString();
            }
            else{   //
                System.out.println("狀態(tài)碼:" + code);
                return null;
            }
        }
        catch(Exception e){
            e.printStackTrace();
            
            return null;
        }
    }
    
    /**
     * post請(qǐng)求(用于請(qǐng)求json格式的參數(shù))
     * @param url
     * @param params
     * @return
     */
    public static String doPost(String url, String params) throws Exception {
        
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(url);// 創(chuàng)建httpPost  
        httpPost.setHeader("Accept", "application/json");
        httpPost.setHeader("Content-Type", "application/json");
        String charSet = "UTF-8";
        StringEntity entity = new StringEntity(params, charSet);
        httpPost.setEntity(entity);       
        CloseableHttpResponse response = null;
        
        try {
            
            response = httpclient.execute(httpPost);
            StatusLine status = response.getStatusLine();
            int state = status.getStatusCode();
            if (state == HttpStatus.SC_OK) {
                HttpEntity responseEntity = response.getEntity();
                String jsonString = EntityUtils.toString(responseEntity);
                return jsonString;
            }
            else{
                 logger.error("請(qǐng)求返回:"+state+"("+url+")");
            }
        }
        finally {
            if (response != null) {
                try {
                    response.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }  
}

httpclient是一個(gè)非常常用的工具,在項(xiàng)目開(kāi)發(fā)的時(shí)候,經(jīng)常需要請(qǐng)求第三方的接口,我整理好了這段代碼,以后回頭找的時(shí)候就方便啦!

HttpClient發(fā)送Get、Post請(qǐng)求的實(shí)踐

1. 配置及實(shí)例化HttpClient

?
1
2
3
4
5
6
private static final CloseableHttpClient httpclient;
    public static final String CHARSET = "UTF-8";      
    static{
        RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(3000).build();
        httpclient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
    }

2. 發(fā)送Get請(qǐng)求方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
     * HTTP Get 獲取內(nèi)容
     * @param url請(qǐng)求的url地址 ?之前的地址
     * @param params請(qǐng)求的參數(shù)
     * @param charset編碼格式
     * @return 頁(yè)面內(nèi)容
     */
    public static String sendGet(String url, Map<String, Object> params) throws ParseException, UnsupportedEncodingException, IOException{       
        if(params !=null && !params.isEmpty()){        
            List<NameValuePair> pairs = new ArrayList<NameValuePair>(params.size());           
            for (String key :params.keySet()){
                pairs.add(new BasicNameValuePair(key, params.get(key).toString()));
            }
            url +="?"+EntityUtils.toString(new UrlEncodedFormEntity(pairs), CHARSET);
        }
        
        HttpGet httpGet = new HttpGet(url);
        CloseableHttpResponse response = httpclient.execute(httpGet);
        int statusCode = response.getStatusLine().getStatusCode();
        if(statusCode !=200){
            httpGet.abort();
            throw new RuntimeException("HttpClient,error status code :" + statusCode);
        }
        HttpEntity entity = response.getEntity();
        String result = null;
        if (entity != null) {
            result = EntityUtils.toString(entity, "utf-8");
            EntityUtils.consume(entity);
            response.close();
            return result;
        }else{
            return null;
        }
    }

3. 發(fā)送Post請(qǐng)求方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
 * HTTP Post 獲取內(nèi)容
 * @param url請(qǐng)求的url地址 ?之前的地址
 * @param params請(qǐng)求的參數(shù)
 * @param charset編碼格式
 * @return 頁(yè)面內(nèi)容
 * @throws IOException
 * @throws ClientProtocolException
 */
 
public static String sendPost(String url, Map<String, Object> params) throws ClientProtocolException, IOException {
        List<NameValuePair> pairs = null;
        if (params != null && !params.isEmpty()) {
            pairs = new ArrayList<NameValuePair>(params.size());
            for (String key : params.keySet()) {
                pairs.add(new BasicNameValuePair(key, params.get(key).toString()));
        }
        }
        HttpPost httpPost = new HttpPost(url);
        if (pairs != null && pairs.size() > 0) {
            httpPost.setEntity(new UrlEncodedFormEntity(pairs, CHARSET));
        }
        CloseableHttpResponse response = httpclient.execute(httpPost);
        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode != 200) {
            httpPost.abort();
            throw new RuntimeException("HttpClient,error status code :" + statusCode);
        }
        HttpEntity entity = response.getEntity();
        String result = null;
        if (entity != null) {
            result = EntityUtils.toString(entity, "utf-8");
            EntityUtils.consume(entity);
            response.close();
            return result;
        }else{
             return null;
        }
}

4. 編寫測(cè)試用例,進(jìn)行Get 、Post請(qǐng)求方法的測(cè)試

4.1 測(cè)試Get方法,e .g:

?
1
2
3
4
5
6
7
8
@Test
public void testGet() throws ParseException, UnsupportedEncodingException, IOException {
    String testUrl01 = "具體的測(cè)試接口地址";
    Map<String, Object> params01 = new HashMap<>();
    params01.put("參數(shù)01", "對(duì)應(yīng)的參數(shù)取值");
    params01.put("參數(shù)02", "對(duì)應(yīng)的參數(shù)取值");
    System.out.println(sendGet(testUrl01, params01));      
}

java中httpclient封裝post請(qǐng)求和get的請(qǐng)求實(shí)例

4.2 測(cè)試Post方法,e.g:

?
1
2
3
4
5
6
7
8
@Test
    public void testPost() throws ClientProtocolException, IOException {   
        String testUrl02 = "具體的測(cè)試接口地址";
        Map<String, Object> params02 = new HashMap<>();
        params02.put("參數(shù)01", "對(duì)應(yīng)的參數(shù)取值");
        params02.put("參數(shù)02", "對(duì)應(yīng)的參數(shù)取值");
        System.out.println(sendPost(testUrl02, params02));     
    }

java中httpclient封裝post請(qǐng)求和get的請(qǐng)求實(shí)例

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/qq9808/article/details/78320816

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: a集毛片| 成人免费乱码大片a毛片视频网站 | 激情小说另类 | 国产精品视频一区二区三区综合 | 青草视频在线观看视频 | 成人在线观看一区二区 | 日韩99| 精品国产一二区 | 91九色视频观看 | www.48xx.com | 欧美城天堂网 | 国产一区二区三区手机在线 | 国产精品午夜未成人免费观看 | 国产一区视频观看 | 一级尻逼视频 | 欧美中文字幕一区二区三区亚洲 | 电影一级毛片 | 欧美999 | 一区二区三区日韩 | 亚洲精品在线观看免费 | 午夜视频大全 | 欧美高清第一页 | 91青青| 免费观看一级黄色片 | 国产精品爆操 | 蜜桃av鲁一鲁一鲁一鲁 | 日韩视频―中文字幕 | 91成人影库| 日韩视频一 | 久草免费新视频 | www亚洲 | 久久日本| 大号bbwassbigav头交 | 国产精品手机在线亚洲 | 精精国产xxxx视频在线野外 | 欧美老逼 | 在线中文资源免费 | 黄色小视频在线免费看 | 国产精品久久久久av | 欧洲黄视频 | 天天躁狠狠躁夜躁2020挡不住 |