zoukankan      html  css  js  c++  java
  • (一)HttpClient Get请求

    原文链接:https://blog.csdn.net/justry_deng/article/details/81042379

    HttpClient的主要功能:

    • 实现了所有 HTTP 的方法(GET、POST、PUT、HEAD、DELETE、HEAD、OPTIONS 等)
    • 支持 HTTPS 协议
    • 支持代理服务器(Nginx等)等
    • 支持自动(跳转)转向

    引入依赖:

    <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.12</version>
    </dependency>
    

    get无参:

        /**
    	 * GET---无参测试
    	 *
    	 * @date 2018年7月13日 下午4:18:50
    	 */
    	@Test
    	public void doGetTestOne() {
    		// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
    		CloseableHttpClient httpClient = HttpClientBuilder.create().build();
    		// 创建Get请求
    		HttpGet httpGet = new HttpGet("http://localhost:12345/doGetControllerOne");
     
    		// 响应模型
    		CloseableHttpResponse response = null;
    		try {
    			// 由客户端执行(发送)Get请求
    			response = httpClient.execute(httpGet);
    			// 从响应模型中获取响应实体
    			HttpEntity responseEntity = response.getEntity();
    			System.out.println("响应状态为:" + response.getStatusLine());
    			if (responseEntity != null) {
    				System.out.println("响应内容长度为:" + responseEntity.getContentLength());
    				System.out.println("响应内容为:" + EntityUtils.toString(responseEntity));
    			}
    		} catch (ClientProtocolException e) {
    			e.printStackTrace();
    		} catch (ParseException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				// 释放资源
    				if (httpClient != null) {
    					httpClient.close();
    				}
    				if (response != null) {
    					response.close();
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    

    GET有参(方式一:直接拼接URL):

        /**
    	 * GET---有参测试 (方式一:手动在url后面加上参数)
    	 *
    	 * @date 2018年7月13日 下午4:19:23
    	 */
    	@Test
    	public void doGetTestWayOne() {
    		// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
    		CloseableHttpClient httpClient = HttpClientBuilder.create().build();
     
    		// 参数
    		StringBuffer params = new StringBuffer();
    		try {
    			// 字符数据最好encoding以下;这样一来,某些特殊字符才能传过去(如:某人的名字就是“&”,不encoding的话,传不过去)
    			params.append("name=" + URLEncoder.encode("&", "utf-8"));
    			params.append("&");
    			params.append("age=24");
    		} catch (UnsupportedEncodingException e1) {
    			e1.printStackTrace();
    		}
     
    		// 创建Get请求
    		HttpGet httpGet = new HttpGet("http://localhost:12345/doGetControllerTwo" + "?" + params);
    		// 响应模型
    		CloseableHttpResponse response = null;
    		try {
    			// 配置信息
    			RequestConfig requestConfig = RequestConfig.custom()
    					// 设置连接超时时间(单位毫秒)
    					.setConnectTimeout(5000)
    					// 设置请求超时时间(单位毫秒)
    					.setConnectionRequestTimeout(5000)
    					// socket读写超时时间(单位毫秒)
    					.setSocketTimeout(5000)
    					// 设置是否允许重定向(默认为true)
    					.setRedirectsEnabled(true).build();
     
    			// 将上面的配置信息 运用到这个Get请求里
    			httpGet.setConfig(requestConfig);
     
    			// 由客户端执行(发送)Get请求
    			response = httpClient.execute(httpGet);
     
    			// 从响应模型中获取响应实体
    			HttpEntity responseEntity = response.getEntity();
    			System.out.println("响应状态为:" + response.getStatusLine());
    			if (responseEntity != null) {
    				System.out.println("响应内容长度为:" + responseEntity.getContentLength());
    				System.out.println("响应内容为:" + EntityUtils.toString(responseEntity));
    			}
    		} catch (ClientProtocolException e) {
    			e.printStackTrace();
    		} catch (ParseException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				// 释放资源
    				if (httpClient != null) {
    					httpClient.close();
    				}
    				if (response != null) {
    					response.close();
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    

    GET有参(方式二:使用URI获得HttpGet):

        /**
    	 * GET---有参测试 (方式二:将参数放入键值对类中,再放入URI中,从而通过URI得到HttpGet实例)
    	 *
    	 * @date 2018年7月13日 下午4:19:23
    	 */
    	@Test
    	public void doGetTestWayTwo() {
    		// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
    		CloseableHttpClient httpClient = HttpClientBuilder.create().build();
     
    		// 参数
    		URI uri = null;
    		try {
    			// 将参数放入键值对类NameValuePair中,再放入集合中
    			List<NameValuePair> params = new ArrayList<>();
    			params.add(new BasicNameValuePair("name", "&"));
    			params.add(new BasicNameValuePair("age", "18"));
    			// 设置uri信息,并将参数集合放入uri;
    			// 注:这里也支持一个键值对一个键值对地往里面放setParameter(String key, String value)
    			uri = new URIBuilder().setScheme("http").setHost("localhost")
    					              .setPort(12345).setPath("/doGetControllerTwo")
    					              .setParameters(params).build();
    		} catch (URISyntaxException e1) {
    			e1.printStackTrace();
    		}
    		// 创建Get请求
    		HttpGet httpGet = new HttpGet(uri);
     
    		// 响应模型
    		CloseableHttpResponse response = null;
    		try {
    			// 配置信息
    			RequestConfig requestConfig = RequestConfig.custom()
    					// 设置连接超时时间(单位毫秒)
    					.setConnectTimeout(5000)
    					// 设置请求超时时间(单位毫秒)
    					.setConnectionRequestTimeout(5000)
    					// socket读写超时时间(单位毫秒)
    					.setSocketTimeout(5000)
    					// 设置是否允许重定向(默认为true)
    					.setRedirectsEnabled(true).build();
     
    			// 将上面的配置信息 运用到这个Get请求里
    			httpGet.setConfig(requestConfig);
     
    			// 由客户端执行(发送)Get请求
    			response = httpClient.execute(httpGet);
     
    			// 从响应模型中获取响应实体
    			HttpEntity responseEntity = response.getEntity();
    			System.out.println("响应状态为:" + response.getStatusLine());
    			if (responseEntity != null) {
    				System.out.println("响应内容长度为:" + responseEntity.getContentLength());
    				System.out.println("响应内容为:" + EntityUtils.toString(responseEntity));
    			}
    		} catch (ClientProtocolException e) {
    			e.printStackTrace();
    		} catch (ParseException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				// 释放资源
    				if (httpClient != null) {
    					httpClient.close();
    				}
    				if (response != null) {
    					response.close();
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    

      

      

  • 相关阅读:
    oracle查看所有角色
    jQuery 异步提交表单实例解析
    oracle查看用户系统权限
    js中日期操作大全
    oracle 查询用户下所有表
    JS语法字典
    JS定时器例子讲解
    开源软件
    rpm的使用
    lvs+keepalived和haproxy+heartbeat区别
  • 原文地址:https://www.cnblogs.com/lvchengda/p/13035822.html
Copyright © 2011-2022 走看看