commons-httpclient 實現get和post請求


PS:這個jar包,在2007年之后就沒有更新過了, 是比較老的版本了。追求新的版本 用HttpComponents 比較好

引入的jar包為:

<!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->
<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency>

 

具體實現類為:

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;

public class HttpClientHelper {
    private static Logger logger = LoggerFactory.getLogger(HttpClientHelper.class);

    private HttpClientHelper() {

    }

    /**
     * 發起POST請求
     *
     * @param url       url
     * @param paramJson 參數的json格式
     */
    public static String sendPost(String url, String paramJson) {
        logger.info("開始發起POST請求,請求地址為{},參數為{}", url, paramJson);

        // 創建httpClient實例對象
        HttpClient httpClient = new HttpClient();
        // 設置httpClient連接主機服務器超時時間:15000毫秒
        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
        // 創建post請求方法實例對象
        PostMethod postMethod = new PostMethod(url);
        // 設置post請求超時時間
        postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);
        postMethod.addRequestHeader("Content-Type", "application/json");
        try {
            //json格式的參數解析
            RequestEntity entity = new StringRequestEntity(paramJson, "application/json", "UTF-8");
            postMethod.setRequestEntity(entity);

            httpClient.executeMethod(postMethod);
            String result = postMethod.getResponseBodyAsString();
            postMethod.releaseConnection();
            return result;
        } catch (IOException e) {
            logger.error("POST請求發出失敗,請求的地址為{},參數為{},錯誤信息為{}", url, paramJson, e.getMessage(), e);
        }
        return null;
    }

    /**
     * 發起GET請求
     *
     * @param urlParam url請求,包含參數
     */
    public static String sendGet(String urlParam) {
        logger.info("開始發起GET請求,請求地址為{}", urlParam);
        // 創建httpClient實例對象
        HttpClient httpClient = new HttpClient();
        // 設置httpClient連接主機服務器超時時間:15000毫秒
        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
        // 創建GET請求方法實例對象
        GetMethod getMethod = new GetMethod(urlParam);
        // 設置post請求超時時間
        getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);
        getMethod.addRequestHeader("Content-Type", "application/json");
        try {
            httpClient.executeMethod(getMethod);
            String result = getMethod.getResponseBodyAsString();
            getMethod.releaseConnection();
            logger.info("返回信息為{}", result);
            return result;
        } catch (IOException e) {
            logger.error("GET請求發出失敗,請求的地址為{},錯誤信息為{}", urlParam, e.getMessage(), e);
        }
        return null;
    }

    public static void main(String[] args) {
        String url = "https://jiashubing.cn/tencenttest";
        String param = "{\"aaa\":\"bbbbbbb\"}";
        sendPost(url, param);
        String urlParam = "https://jiashubing.cn/talk/document?fileid=1234";
        sendGet(urlParam);
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM