zoukankan      html  css  js  c++  java
  • HTTP请求(HttpClient和PostMan)

    在没有页面的情况下来获取接口返回的数据(一般都是为JSON),我们可以通过一些工具模拟HTTP请求

    服务端模拟HTTP请求

    通过JAVA代码进行HTTP请求的发送

    1.准备依赖

        <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
        <dependency>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
          <version>4.5.6</version>
        </dependency>

    2.创建post和get方式请求的方法

    package com.ty.http;
    
    
    import org.apache.http.HttpEntity;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.util.EntityUtils;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class MyHttpClient {
        private static void myPost() throws IOException {
            //建立连接请求
            CloseableHttpClient httpClient = HttpClients.createDefault();
            //创建post请求
            HttpPost httpPost = new HttpPost("http://eureka7002.com:6061/myServlet");
            //创建参数队列
            List<NameValuePair> nameValuePairList=new ArrayList<>();
            //准备请求参数队列
            nameValuePairList.add(new BasicNameValuePair("userName","天雁"));
            //
            UrlEncodedFormEntity urlEncodedFormEntity=new UrlEncodedFormEntity(nameValuePairList,"UTF-8");
            //讲实体封装到请求当中
            httpPost.setEntity(urlEncodedFormEntity);
            //发送请求
            CloseableHttpResponse response = httpClient.execute(httpPost);
            HttpEntity entity = response.getEntity();
            if (entity!=null){
                System.out.println("接收到的响应信息:--------"+EntityUtils.toString(entity,"UTF-8"));
            }
            //资源释放
            response.close();
            httpClient.close();
    
        }
    
        private static void myGet() throws IOException {
    
            //建立连接请求
            CloseableHttpClient httpClient = HttpClients.createDefault();
            //创建get请求
            HttpGet get=new HttpGet("https://www.baidu.com/");
            CloseableHttpResponse response = httpClient.execute(get);
            int statusCode = response.getStatusLine().getStatusCode();
            //响应成功在操作
            if (statusCode==200) {
                //获取响应实体
                HttpEntity entity = response.getEntity();
    
                //打印响应内容长度
                System.out.println("响应文本长度:"+entity.getContentLength());
                //打印响应内容
                System.out.println("响应内容如下:
    "+EntityUtils.toString(entity,"UTF-8"));
            }
            System.out.println("--------------------------响应内容打印完毕");
            //释放资源
            response.close();
            httpClient.close();
        }
    
        public static void main(String[] args) {
            try {
              //  myGet();
                myPost();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    4.get测试百度返回结果

     5.post测试本机的另一个服务

    5.1给项目准备依赖
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>1.2.58</version>
        </dependency>
    5.2创建一个Servlet,接收一个参数,返回json串
    package com.ty.servlet;
    
    import com.alibaba.fastjson.JSON;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    @WebServlet("/myServlet")
    public class MyServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            req.setCharacterEncoding("UTF-8");
            String userName = req.getParameter("userName");
            resp.setHeader("Content-type", "text/html;charset=UTF-8");
            System.out.println("接受到的数据:"+userName);
            String json="成功响应";
            resp.getWriter().write(JSON.toJSONString(json));
        }
    }
    5.3启动服务,发送post请求,结果如下

     

    客户端工具模拟HTTP请求

    PostMan发送get请求百度

     发送post请求

  • 相关阅读:
    与非
    抄卡组
    数据结构》关于差分约束的两三事(BZOJ2330)
    刷题向》图论》BZOJ1179 关于tarjan和SPFA的15秒(normal)
    图论算法》关于tarjan算法两三事
    图论算法》关于SPFA和Dijkstra算法的两三事
    刷题向》DP》值得一做》关于对DP问题的充分考虑(normal)
    数据结构》关于线段树两三事(新手向)(工具向)
    图论算法》关于匈牙利算法的两三事
    关于羊和车的问题
  • 原文地址:https://www.cnblogs.com/yjc1605961523/p/12263729.html
Copyright © 2011-2022 走看看