Http get方式发送请求

首先介绍一种简单的方式,因为get请求传递参数是可以直接拼凑在Url后的,这个是最基本的东西,即使有各种的工具类,本质还是这个,我们先把最本质的东西贴出来,接下来再介绍一些工具类。

@Test
    public void test01() throws IOException {
        // 简单建立一个客户端
        CloseableHttpClient client = HttpClientBuilder.create().build();
        // 建立请求url
        StringBuilder sb = new StringBuilder("http://www.baidu.com");
        sb.append("?a=1");
        // 这里注意,如果需要传递数组的话,需要是用b[]=1&b[]=2这种格式,因为[和]都算是特殊字符,需要做编码操作
        //sb.append(URLEncoder.encode("b[]=1&b[]=2", "utf-8"));  JDK-8的版本使用,会抛异常,这里编码也需要像下面一样拆开
        sb.append("&"+URLEncoder.encode("b[]", StandardCharsets.UTF_8)+"=1"); //JDK-10以上的版本
        sb.append("&"+URLEncoder.encode("b[]", StandardCharsets.UTF_8)+"=2"); //JDK-10以上的版本
        System.out.println(sb.toString());
        HttpGet get = new HttpGet(sb.toString());
        // 设置请求头          get.setHeader("","");
        CloseableHttpResponse execute = client.execute(get);
    }

这个地方可以很明显的看到一个弊端,就是当需要编码时,拼接时太麻烦,所以我们可以使用工具类URIBuilder帮我们来生成url

    @Test
    public void test02() throws Exception {
        // 简单建立一个客户端
        CloseableHttpClient client = HttpClientBuilder.create().build();
        // 建立请求url
        URIBuilder uriBuilder = new URIBuilder("http://www.baidu.com");
        //单个属性注入,多个属性,就重复多遍就好,同名不会产生覆盖
        //uriBuilder.addParameter("a", "1");

        //这里我们主要演示多个
        List<NameValuePair> list = new ArrayList<>();
        list.add(new BasicNameValuePair("a", "1"));
        list.add(new BasicNameValuePair("b[]", "zhangsan"));
        list.add(new BasicNameValuePair("b[]", "lisi"));
        uriBuilder.addParameters(list);
        //我们这里直接build,就不会发生编码解码的问题了
        HttpGet get = new HttpGet(uriBuilder.build());
        // 设置请求头          get.setHeader("","");
        CloseableHttpResponse execute = client.execute(get);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值