java 发送 http 请求

POM 依赖

<dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.6</version>
        </dependency>

不带参数 get 请求

public void doGet() throws ClientProtocolException, IOException {
        // 创建一个httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        // 创建一个GET对象
        HttpGet get = new HttpGet("http://localhost:8080/test/get?param=1");
        // 设置请求头
        get.setHeader("contentType", "application/json;charset=utf-8");
        get.setHeader("Accept", "application/json;charset=utf-8");
        // 执行请求
        CloseableHttpResponse response = httpClient.execute(get);
        // 取响应的结果
        int statusCode = response.getStatusLine().getStatusCode();
        System.out.println(statusCode);
        HttpEntity entity = response.getEntity();
        String string = EntityUtils.toString(entity, "utf-8");
        System.out.println(string);
        // 关闭httpclient
        response.close();
        httpClient.close();
    }    

带参数的 GET 请求

public void doGetWithParam() throws Exception {

        // 创建一个httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        // 创建一个uri对象
        URIBuilder uriBuilder = new URIBuilder("http://www.sogou.com/web");
        uriBuilder.addParameter("query", "花千骨");
        HttpGet get = new HttpGet(uriBuilder.build());
        // 执行请求
        CloseableHttpResponse response = httpClient.execute(get);
        // 取响应的结果
        int statusCode = response.getStatusLine().getStatusCode();
        System.out.println(statusCode);
        HttpEntity entity = response.getEntity();
        String string = EntityUtils.toString(entity, "utf-8");
        System.out.println(string);
        // 关闭httpclient
        response.close();
        httpClient.close();
    }

不带参数的 POST 请求

public void doPost() throws Exception {

        CloseableHttpClient httpClient = HttpClients.createDefault();
        // 创建一个post对象
        HttpPost post = new HttpPost("http://localhost:8082/httpclient/post.html");
        // 执行post请求
        CloseableHttpResponse response = httpClient.execute(post);
        String string = EntityUtils.toString(response.getEntity());
        System.out.println(string);
        response.close();
        httpClient.close();
    }

带参数的 POST 请求

public void doPostWithParam() throws Exception {
// 创建一个post对象
        HttpPost post = new HttpPost("http://localhost:8080/test/post");
        // 设置请求头
        post.setHeader("contentType", "application/json;charset=utf-8");
        post.setHeader("Accept", "application/json;charset=utf-8");
        // 发送参数
        Map<String,String> map = new HashMap<String,String>();
        map.put("username","zhangsan");
        StringEntity s = new StringEntity(JSON.toJSONString(map));
        s.setContentEncoding("UTF-8");
        s.setContentType("application/json");//发送json数据需要设置contentType
        post.setEntity(s);
        // 执行post请求
        CloseableHttpResponse response = httpClient.execute(post);
        String string = EntityUtils.toString(response.getEntity());
        System.out.println(string);
        response.close();
        httpClient.close();
}
原文地址:https://www.cnblogs.com/huanggy/p/9636461.html