zoukankan      html  css  js  c++  java
  • httpclient如何获取请求参数

    目的

    见另一篇博客代码需求
    https://blog.csdn.net/GY325416/article/details/81412078

    如何获取前台get请求的参数

    /**
     * 返回get方法 填充前台传送来的参数
     *
     * @param uri 要请求的接口地址
     * @param request 前台请求过来后 controller层请求对象
     * @author piper
     * @data 2018/7/3 11:19
     */
    HttpGet getMethod(String uri, HttpServletRequest request) {
        try {
            URIBuilder builder = new URIBuilder(uri);
            Enumeration<String> enumeration = request.getParameterNames();
            //将前台的参数放到我的请求里面
            while (enumeration.hasMoreElements()) {
                String nex = enumeration.nextElement();
                builder.setParameter(nex, request.getParameter(nex));
            }
            return new HttpGet(builder.build());
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
        return null;
    }
    

    如何获取post请求的参数

    post请求时可能传的是form表单,也可能是json数据

    如何判断前台传送的是json数据?通过request对象的ContentType请求头可以判断
    如果是json,Content-Type应该是application-json;charset=utf-8,所以获取请求头判断就行了

    /**
    * 返回post方法
     *
     * @param uri 要请求的地址
     * @param request 前台请求对象
     * @author piper
     * @data 2018/7/3 11:19
     */
    HttpPost postMethod(String uri, HttpServletRequest request) {
        StringEntity entity = null;
        if (request.getContentType().contains("json")) {
            entity = jsonData(request);  //填充json数据
        } else {
            entity = formData(request);  //填充form数据
        }
        HttpPost httpPost = new HttpPost(uri);
        httpPost.setHeader("Content-Type", request.getHeader("Content-Type"));
        httpPost.setEntity(entity);
        return httpPost;
    }
    

    获取post请求的form表单数据

    /**
     * 处理post请求 form数据 填充form数据
     *
     * @param request 前台请求
     * @author piper
     * @data 2018/7/17 18:05
     */
    public UrlEncodedFormEntity formData(HttpServletRequest request) {
        UrlEncodedFormEntity urlEncodedFormEntity = null;
        try {
            List<NameValuePair> pairs = new ArrayList<>();  //存储参数
            Enumeration<String> params = request.getParameterNames();  //获取前台传来的参数
            while (params.hasMoreElements()) {
                String name = params.nextElement();
                pairs.add(new BasicNameValuePair(name, request.getParameter(name)));
            }
            //根据参数创建参数体,以便放到post方法中
            urlEncodedFormEntity = new UrlEncodedFormEntity(pairs, request.getCharacterEncoding());
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return urlEncodedFormEntity;
    }
    

    获取post请求的json数据

    /**
     * 处理post请求 json数据
     *
     * @param request 前台请求
     * @author piper
     * @data 2018/7/17 18:05
     */
    public StringEntity jsonData(HttpServletRequest request) {
        InputStreamReader is = null;
        try {
            is = new InputStreamReader(request.getInputStream(), request.getCharacterEncoding());
            BufferedReader reader = new BufferedReader(is);
            //将json数据放到String中
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }
            //根据json数据创建请求体
            return new StringEntity(sb.toString(), request.getCharacterEncoding()); 
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    
  • 相关阅读:
    WSL2
    坐标系变换
    Python websocket
    PAJ7620 IIC 通信
    Python中assert的使用
    Python中循环的使用
    Linux 生成指定大小文件
    SVN不显示log 显示1970年问题
    阿里云 CS实例 开机自运行脚本文件
    生成UDS安全算法DLL文件
  • 原文地址:https://www.cnblogs.com/paper-man/p/13284747.html
Copyright © 2011-2022 走看看