一.模拟Get请求(无参)

首先导入HttpClient依赖

  1. <dependency>
  2. <groupId>org.apache.httpcomponents</groupId>
  3. <artifactId>httpclient</artifactId>
  4. <version>4.5.2</version>
  5. </dependency>

测试代码

  1. //Get请求
  2. public static void getRequest() throws IOException {
  3. //创建一个默认的链接
  4. CloseableHttpClient client = HttpClients.createDefault();
  5. //创建一个请求
  6. HttpGet httpGet=new HttpGet("https://www.cnblogs.com/chx9832");
  7. //执行请求获取响应的结果
  8. CloseableHttpResponse response = client.execute(httpGet);
  9. //获取响应的状态码
  10. int statusCode = response.getStatusLine().getStatusCode();
  11. System.out.println("服务器返回状态码:"+statusCode);
  12. //服务器正常响应
  13. if(statusCode ==200){
  14. //获取响应结果
  15. System.out.println(EntityUtils.toString(response.getEntity(),"UTF-8"));
  16. }
  17. //关闭结果对象
  18. response.close();
  19. //关闭链接
  20. client.close();
  21. }

通过main方法调用就可拿到目标地址的代码段

 一.模拟Post请求(带参)

与get请求类似,不同的是带参需要创建参数队列,并把参数封装到请求体再set进请求中.

  1. //模拟Post请求
  2. public static void postRequest() throws IOException {
  3. //创建链接
  4. CloseableHttpClient client = HttpClients.createDefault();
  5. //创建请求
  6. HttpPost httpPost=new HttpPost("http://localhost:8080/HttpClientServlet");
  7.  
  8. //创建参数队列
  9. List<NameValuePair> pairList=new ArrayList<>();
  10. pairList.add(new BasicNameValuePair("username","怀鑫"));
  11. //创建请求体,封装参数
  12. UrlEncodedFormEntity entity=new UrlEncodedFormEntity(pairList,"UTF-8");
  13. //将请求体交给当前请求
  14. httpPost.setEntity(entity);
  15.  
  16. //发送请求,接收结果
  17. CloseableHttpResponse response = client.execute(httpPost);
  18. System.out.println("接收到的结果为:"+EntityUtils.toString(response.getEntity(),"UTF-8"));
  19.  
  20. //关闭资源
  21. response.close();
  22. client.close();
  23. }

新建一个web项目,创建一个servlet模拟服务器,启动tomcat等待请求

  1. package com.chx;
  2.  
  3. import javax.servlet.ServletException;
  4. import javax.servlet.annotation.WebServlet;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import java.io.IOException;
  9.  
  10. @WebServlet("/HttpClientServlet")
  11. public class HttpClientServlet extends HttpServlet {
  12. @Override
  13. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  14. //获取数据
  15. String username = req.getParameter("username");
  16. System.out.println("接收的数据:"+username);
  17. resp.setContentType("text/html;charset=utf-8");
  18. resp.getWriter().write("服务器正确接收到数据~");
  19. }
  20.  
  21. @Override
  22. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  23. doPost(req,resp);
  24. }
  25. }

回到post请求方法启动后执行效果

服务器端

这样,就完成了简单的httpclient的get和post请求...

总结:

1. 创建HttpClient对象。

2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。

3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HttpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity) 方法来设置请求参数。

4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。

5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务 器的响应内容。程序可通过该对象获取服务器的响应内容。

6. 释放连接。无论执行方法是否成功,都必须释放连接

HTTPClient模拟Get和Post请求的更多相关文章

  1. 通过C#的HttpClient模拟form表单请求

    post提交表单一般无非是一般text文本和文件类型,如下 <input type="file"/> <input type="text"/& ...

  2. 解决 HttpClient 模拟 http 的get 请求后 ,出现 403 错误

    解决方法: URI uri = builder.build(); // 创建http GET请求 HttpGet httpGet = new HttpGet(uri); httpGet.setHead ...

  3. HttpClient模拟get,post请求并发送请求参数(json等)

    import java.io.IOException; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org. ...

  4. HttpClient模拟http请求

    Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且 ...

  5. 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView

    本文面向Android初级开发者,有一定的Java和Android知识即可. 文章覆盖知识点:HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新List ...

  6. 关于HttpClient模拟浏览器请求的參数乱码问题解决方式

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44407297 http://www.llwjy.com/blogdetail/9 ...

  7. JAVA--利用HttpClient模拟浏览器登陆请求获取响应的Cookie

    在通过java采集网页数据时,我们常常会遇到这样的问题: 站点需要登陆才能访问 而这种网站,一般都会对请求进行账号密码的验证,验证的方式也有多种,需要具体分析. 今天分析其中的一种情况: 站点对登陆密 ...

  8. 接口测试中模拟post四种请求数据

    https://www.jianshu.com/p/3b6d7aa2043a 一.背景介绍 在日常的接口测试工作中,模拟接口请求通常有两种方法,fiddler模拟和HttpClient模拟. Fidd ...

  9. 使用HttpClient来异步发送POST请求并解析GZIP回应

    .NET 4.5(C#): 使用HttpClient来异步发送POST请求并解析GZIP回应 在新的C# 5.0和.NET 4.5环境下,微软为C#加入了async/await,同时还加入新的Syst ...

随机推荐

  1. Sunset-Sunrise: Vulnhub Walkthrough

    靶机链接: https://www.vulnhub.com/entry/sunset-sunrise,406/ 主机扫描: 端口扫描: HTTP 80 目录枚举未果 HTTP 8080 Google ...

  2. 轮播组件/瀑布流/组合搜索/KindEditor插件

    一.企业官网 ### 瀑布流 ​ Models.Student.objects.all() #获取所有学员信息 ​ 通过div进行循环图片和字幕 ​ 1.以template模板方法实现瀑布流以列为单位 ...

  3. 阿里Java架构师分享自己的成长经历,教你如何快速成长为架构师

    架构师是公司的“金领”,很少需要考虑生存的问题,从而有更多的精力思考关键技术,形成“强者愈强”的良性循环.当然,冰冻三尺非一日之寒,成为一名合格的架构师是一个漫长的积累过程.对于大部分的软件开发人员来 ...

  4. docker配置仓库源

    1 修改docker配置文件 下面的内网ip改成公司的私有仓库地址 后面两个建议保留(一个是国内加速源,一个是国外仓库.这两个删了也是可以的) 2 重启docker服务 # vim /etc/dock ...

  5. SpringCloud入门学习

    我相信,如果小伙伴们能来到这里,肯定对微服务有一定的认识. 我们之前创建web项目的时候,常见的有两种方式: 1).创建一个war包,然后放在servlet容器中运行(比如Tomcat等); 2).使 ...

  6. MySQL基础(3) | 函数

    MySQL基础(3) | 函数 前言 MySQL只有标量值函数的概念,没有SqlServer那种表值函数. 语法 创建 create function f_add( a int, b int ) re ...

  7. c 指针改变数字

    之前已经有了: gcc -c day4.c -Wall gcc -o day4.exe day4.o 所以才会有以下结果

  8. 剑指offer-面试题53_1-在排序数组中查找数字-二分查找

    /* 题目: 统计一个数字在排序数组中出现的次数. */ /* 思路: 1.从前往后遍历,时间复杂度O(n). 2.二分查找到目标数字target,向前向后遍历,时间复杂度O(n). 3.利用二分法, ...

  9. 【sklearn决策树算法】DecisionTreeClassifier(API)的使用以及决策树代码实例 - 鸢尾花分类

    决策树算法 决策树算法主要有ID3, C4.5, CART这三种. ID3算法从树的根节点开始,总是选择信息增益最大的特征,对此特征施加判断条件建立子节点,递归进行,直到信息增益很小或者没有特征时结束 ...

  10. 优先级队列-堆-STL实现

    #include <cstdio> #include <iostream> #include <queue> using namespace std; // 默认是 ...