首页 > 其他分享 >HttpUtils方法

HttpUtils方法

时间:2023-05-27 15:56:51浏览次数:40  
标签:HttpUtils httpGet String iterator next sb 方法 append

引入依赖:

<!--httpclient-->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>

<!-- io常用工具类 -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
/**
     * 向指定 URL 发送GET方法的请求
     *
     * @param url   发送请求的 URL
     * @param headerMap 请求头参数,。
     * @param paramMap 请求参数,。
     * @return 所代表远程资源的响应结果
     */
    public static String get(String url, Map<String,Object> headerMap, Map<String,Object> paramMap) {
        String res = null;
        StringBuilder sb = new StringBuilder();
        int i = 0;
        try {
            //拼接请求参数
            for (Iterator<String> $it = paramMap.keySet().iterator(); $it.hasNext(); i++){
                String key = $it.next();
                if (i == 0){
                    sb.append("?");
                } else {
                    sb.append("&");
                }
                sb.append(key).append("=").append(paramMap.get(key));
            }
            String apiUrl = url + sb.toString();
            System.err.println("apiUrl:"+apiUrl);
            CloseableHttpClient httpClient = HttpClients.createDefault();
            HttpGet httpGet = new HttpGet(apiUrl);
            if (null != headerMap){
                Iterator<Map.Entry<String, Object>> iterator = headerMap.entrySet().iterator();
                while (iterator.hasNext()){
                    Map.Entry<String, Object> next = iterator.next();
                    httpGet.setHeader(next.getKey(), String.valueOf(next.getValue()));
                }
            }
            for (Header allHeader : httpGet.getAllHeaders()) {
                System.out.println(String.format("%s:%s", allHeader.getName(), allHeader.getValue()));
            }
            CloseableHttpResponse response = httpClient.execute(httpGet);
            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode == 200 || statusCode == 201){
                InputStream content = response.getEntity().getContent();
                res = IOUtils.toString(content, "UTF-8");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return res;
    }

 

标签:HttpUtils,httpGet,String,iterator,next,sb,方法,append
From: https://www.cnblogs.com/ljl5921/p/17436845.html

相关文章

  • 在jsp中为a标签的href属性拼接动态变量的方法
    在做web项目练习时遇到了一个需要为href拼接动态变量的问题,在jsp中有这么一段代码实现用户的删改功能。首先摆出我一开始错误的代码来说明问题。<html><head><title>人员管理</title></head><body><%//从后端Servlrt获取的一个储存我自定义的Persion对象的ListList<Pers......
  • C# 类的扩展方法
    给类对象增加扩展方法,要注意命名空间,一般要使用原类对象的相同命名空间,还有扩展方法类的修饰符需要使用static。下边举个例子:namespaceSystem{///<summary>///DateTime对象扩展方法///</summary>publicstaticclassExtDateTime{///<s......
  • php如何输出二维数组,PHP中以不同形式的输出遍历二维数组 方法
    $arr=array(array("101","李军","男","1976-02-20","95033"),array("103","陆君","男","1974-06-03","95031"),array("105","匡明","男","......
  • request对象的常用方法
    1 乱码问题  25 // get请求在请求行上提交数据。 // post请求在请求体中提交数据。 // 设置请求体的字符集。(显然这个方法是处理POST请求的乱码问题。这种方式并不能解决get请求的乱码问题。) // Tomcat10之后,request请求体当中的字符集默认就是UTF-8,不需要设置字符集,不......
  • 使用fx.Parallel方法并发执行函数时遇到的惰性计算的坑
    错误的写法packagescripts_stroageimport("encoding/hex""fmt""github.com/zeromicro/go-zero/core/fx""math/rand""sync""testing""time")varfns[]func()......
  • # c#中的扩展方法
    c#中的扩展方法扩展声明扩展方法它可以让我们在不修改原始类的情况下,为其添加新的方法。并不是任何方法都能作为扩展方法使用,必须具有以下特征:它必须在一个非嵌套的、非泛型的静态类中(所以必须是一个静态方法)至少要有一个参数;第一个参数必须是要扩展的类型,使用this关键字......
  • html在移动端滑动无效的解决方法
    排查下是否有类似touchmove类似的事件绑定,可能就是其中取消了默认的事件行为。解决方法,在你想滚动的直接父级元素上添加@touchmove.stop="voidnull"类似的事件绑定应该就可以解决了。这里利用了事件冒泡终止的方式。......
  • 使用这些方法让你的 Python 并发任务执行得更好
    动动发财的小手,点个赞吧!问题一直以来,Python的多线程性能因为GIL而一直没有达到预期。所以从3.4版本开始,Python引入了asyncio包,通过并发的方式并发执行IO-bound任务。经过多次迭代,asyncioAPI的效果非常好,并发任务的性能相比多线程版本有了很大的提升。但是,程序员在使......
  • win10电脑游戏全屏占不满整个屏幕解决方法
    win10电脑游戏全屏占不满整个屏幕解决方法 工具/原料华为MateBookWindows10win10电脑游戏全屏占不满整个屏幕解决方法1按win+r打开并运行,输入regedit,然后按Enter进入注册表编辑器页面;2依次展开以下路径:HEKY_LOCAL_MACHINE/SYSTEM/C......
  • Docker 镜像减少体积的思路和方法
    Docker镜像减少体积的思路和方法背景有一个项目感觉镜像有点大这边同事喊着一起帮忙处理一下.今天基本上就在客户现场进行处理了.想着应该把自己想到的东西整理一下.整体思路1.清理dockerfile同级目录内的文件,仅保留必须文件dockerbuild时会进行sendfile的......