-GET和POST请求添加请求参数和请求头【TBK使用】
- 工作小总结
- 时间:2019-01-07 22:24
- 3919人已阅读
简介
我们平常浏览各个网站时,不免有时候就需要填写一些信息,比如注册时,登录时,这些信息一般都是通过GET请求或者POST(敏感信息一般使用POST,数据隐藏,相对来说更安全)请求提交到后台,经过后台的一系列处理,再返回给前台结果,前台进行处理。@Testpublic void getParams() { //&nb
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
我们平常浏览各个网站时,不免有时候就需要填写一些信息,比如注册时,登录时,这些信息一般都是通过GET请求或者POST(敏感信息一般使用POST,数据隐藏,相对来说更安全)
请求提交到后台,经过后台的一系列处理,再返回给前台结果,前台进行处理。
@Test public void getParams() { // 获取连接客户端工具 CloseableHttpClient httpClient = HttpClients.createDefault(); String entityStr = null; CloseableHttpResponse response = null; try { /* * 由于GET请求的参数都是拼装在URL地址后方,所以我们要构建一个URL,带参数 */ URIBuilder uriBuilder = new URIBuilder("http://www.baidu.com"); /** 第一种添加参数的形式 */ /*uriBuilder.addParameter("name", "root"); uriBuilder.addParameter("password", "123456");*/ /** 第二种添加参数的形式 */ List<NameValuePair> list = new LinkedList<>(); BasicNameValuePair param1 = new BasicNameValuePair("name", "root"); BasicNameValuePair param2 = new BasicNameValuePair("password", "123456"); list.add(param1); list.add(param2); uriBuilder.setParameters(list); // 根据带参数的URI对象构建GET请求对象 HttpGet httpGet = new HttpGet(uriBuilder.build()); /* * 添加请求头信息 */ // 浏览器表示 httpGet.addHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)"); // 传输的类型 httpGet.addHeader("Content-Type", "application/x-www-form-urlencoded"); // 执行请求 response = httpClient.execute(httpGet); // 获得响应的实体对象 HttpEntity entity = response.getEntity(); // 使用Apache提供的工具类进行转换成字符串 entityStr = EntityUtils.toString(entity, "UTF-8"); } catch (ClientProtocolException e) { System.err.println("Http协议出现问题"); e.printStackTrace(); } catch (ParseException e) { System.err.println("解析错误"); e.printStackTrace(); } catch (URISyntaxException e) { System.err.println("URI解析异常"); e.printStackTrace(); } catch (IOException e) { System.err.println("IO异常"); e.printStackTrace(); } finally { // 释放连接 if (null != response) { try { response.close(); httpClient.close(); } catch (IOException e) { System.err.println("释放连接出错"); e.printStackTrace(); } } } // 打印响应内容 System.out.println(entityStr); }
因为GET请求的参数都是拼装到URL后面进行传输的,所以这地方不能直接添加参数,需要组装好一个带参数的URI传递到HttpGet的构造方法中,构造一个带参数的GET请求。构造带参数的URI使用URIBuilder
类。
上面添加请求参数的方法有两种,建议后者
,后者操作更加灵活。
POST请求携带请求参数和请求头:
@Test public void postParams() { // 获取连接客户端工具 CloseableHttpClient httpClient = HttpClients.createDefault(); String entityStr = null; CloseableHttpResponse response = null; try { // 创建POST请求对象 HttpPost httpPost = new HttpPost("http://www.baidu.com"); /* * 添加请求参数 */ // 创建请求参数 List<NameValuePair> list = new LinkedList<>(); BasicNameValuePair param1 = new BasicNameValuePair("name", "root"); BasicNameValuePair param2 = new BasicNameValuePair("password", "123456"); list.add(param1); list.add(param2); // 使用URL实体转换工具 UrlEncodedFormEntity entityParam = new UrlEncodedFormEntity(list, "UTF-8"); httpPost.setEntity(entityParam); /* * 添加请求头信息 */ // 浏览器表示 httpPost.addHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)"); // 传输的类型 httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded"); // 执行请求 response = httpClient.execute(httpPost); // 获得响应的实体对象 HttpEntity entity = response.getEntity(); // 使用Apache提供的工具类进行转换成字符串 entityStr = EntityUtils.toString(entity, "UTF-8"); // System.out.println(Arrays.toString(response.getAllHeaders())); } catch (ClientProtocolException e) { System.err.println("Http协议出现问题"); e.printStackTrace(); } catch (ParseException e) { System.err.println("解析错误"); e.printStackTrace(); } catch (IOException e) { System.err.println("IO异常"); e.printStackTrace(); } finally { // 释放连接 if (null != response) { try { response.close(); httpClient.close(); } catch (IOException e) { System.err.println("释放连接出错"); e.printStackTrace(); } } } // 打印响应内容 System.out.println(entityStr); }
https://blog.csdn.net/YouCanYouUp_/article/details/80769572
上一篇: 密码校验【Java端】