HttpClient 带参数get请求_httpclient get 参数-程序员宅基地

技术标签: HttpClient 带参数Get请求  HttpClient  

背景:

本例中使用HttpClient Get请求下载存储系统中的文件。根据存储系统提供的接口文档需要传入参数。

实例1(使用字符串直接拼接get请求中的参数)
1.参数:

filename:存储系统上存储的唯一文件名。(文件名一般是文件上传时生成一个唯一的文件夹路径,这个路径保存在数据库中,要下载文件时,数据库中取出文件夹路径名,去存储系统上下载)

2.返回值

输入流,以流的形式返回,不需要保存在本地浪费资源,使用时调用方法传参拿到返回值就可以使用

eg:

public static InputStream doGet(String filename) {
   //创建HttpClient实例
    CloseableHttpClient httpClient = HttpClients.createDefault();
    StringBuffer stringBuffer = new StringBuffer();
    //拼接get请求URL(url一般包含接口需要的用户名,密码,文件名等参数)
    String url = stringBuffer.append(EmailGradeTask.EMAILGRADETASKDOWNLOADURL).append(filename).toString();

    InputStream inputStream = null;
    try {
    //创建get方法连接实例,在get方法中传入待连接地址
        HttpGet httpGet = new HttpGet(url);
        //发起请求,并返回请求响应
        HttpResponse httpResponse = httpClient.execute(httpGet);
        //得到响应实体
        HttpEntity entity = httpResponse.getEntity();
        //得到实体中文件
        inputStream = entity.getContent();
        long length = entity.getContentLength();
        if (length <= 0) {
            System.out.println("下载文件不存在!");
            return inputStream;
        }
        System.out.println("The response value of token:" + httpResponse.getFirstHeader("token"));

    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
//            try {
//                if (inputStream != null) {
//                    inputStream.close();
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
        }
        return inputStream;
    }
实例二(有的get请求直接拼接请求参数访问不到资源,需要用到URI包封装参数)

在这里插入图片描述

public static String httpClientBySina() throws Exception{
		// 创建Httpclient对象
		CloseableHttpClient httpclient = HttpClients.createDefault();
		// 定义请求的参数
		URI uri = new URIBuilder("https://hq.sinajs.cn/").setParameter("rn", "1563526094204").setParameter("list",  "USDCNY").build();
		// 创建http GET请求
		HttpGet httpGet = new HttpGet(uri);
		//response 对象
		CloseableHttpResponse response = null;
		String resultString="0";
		try {
			// 执行http get请求
			response = httpclient.execute(httpGet);
			// 判断返回状态是否为200
			if (response.getStatusLine().getStatusCode() == 200) {
				resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
		//		System.out.println("内容长度:" + resultString);
			} else {
				throw new Exception("新浪接口获取汇率失败!");
			}
		} finally {
			if (response != null) {
				response.close();
			}
			httpclient.close();
		}
		return resultString;
	}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43078114/article/details/88356419

智能推荐

webstrom 的安装-程序员宅基地

文章浏览阅读253次。webstorm是一个前端开发神器。安装webstorm之前需要配置jdk。配置好jdk之后再进行安装webstorm;1.下载链接jdk:http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-i586.tar.gz?AuthParam=1472692770_2276e0b95c38424d5105a4357..._webstorm需要配置jdk吗

数据结构——平衡二叉树的判断【递归算法】(C语言)_balance treec语言-程序员宅基地

文章浏览阅读874次。平衡二叉树的判断(左右子树的高度差只能为-1,0,1)#include<stdio.h>#include<stdlib.h>#include<queue>#include <iostream>#define MAXSIZE 10010#define ElemType intusing namespace std;typedef struct BTNode{ ElemType data; BTNode *lchild,*._balance treec语言

msyql中文乱码问题_msyql cli 登录 --default-character-set=charset-程序员宅基地

文章浏览阅读1.8k次。参考:http://hi.baidu.com/ayongs/item/30f784122c8d51a5ffded509http://www.2cto.com/database/201108/101151.htmlhttp://www.laruence.com/2008/01/05/12.htmlmysql5.1参考手册一.mysql字符集MySQ_msyql cli 登录 --default-character-set=charset

图像处理和opencv:矩阵数据类型转换convertTo_图像标记矩阵转化-程序员宅基地

文章浏览阅读1.1k次。函数void convertTo( OutputArray m, int rtype, double alpha=1, double beta=0 ) const;参数m – 目标矩阵。如果m在运算前没有合适的尺寸或类型,将被重新分配。rtype – 目标矩阵的类型。因为目标矩阵的通道数与源矩阵一样,所以rtype也可以看做是目标矩阵的位深度。如果rtype为负值,..._图像标记矩阵转化

关于级联选择器el-cascader的踩坑及解决_某个el-cascader展开项跑到另一个el-cascade下面-程序员宅基地

文章浏览阅读505次。解决:给级联选择器加key,key的值是:new Date().getTime(),在每次数据改变的时候更新key,即this.keyIndex = new Date().getTime()我的报错使用场景:级联选择器是遍历出来的,数据也是遍历的数组里面的,报错的原因是我删除了option绑定的数组,因为后台接口不需要这个数据。但是这个方法是有默认参数的,当不满足自己的需要,需要传其他参树的时候,搜索的建议面板和原来的dom不是同一个dom。在获取到数据之后,对数据进行整体处理。_某个el-cascader展开项跑到另一个el-cascade下面

IAR、KEIL常见编译报错警告的解决方法(持续更新中)_was declared but never referenced-程序员宅基地

文章浏览阅读6.8k次,点赞2次,收藏38次。“Warning[Pe550]: variable “变量” was set but neverused”原因:变量定义赋值了但从未使用解决:变量定义删了就可以,编译器也不会真的给这个变量分配空间Warning[Pe223]: function “函数名” declared implicitly "原因:这个函数隐式声明。意思是在他调用的地方找不到函数原型。解决:在调用的地方增加相应函数头文件的函数原型申明。"Warning[Pe177]: function “函数名” was.._was declared but never referenced

随便推点

node.js后端框架介绍_node.js后端框架及作用-程序员宅基地

文章浏览阅读4.6k次,点赞2次,收藏10次。作者:陈健Node.js有许多框架可以选择,包括老牌的express,koa,新晋的egg,nest等等首先可以通过一个表格来看一下各个框架的受欢迎程度:1.ExpressExpress是一款基于node.js以及ChromeV8引擎,快速、极简的JS服务端开发框架,它提供了用来开发强壮的web/移动应用,以及API的所有功能。并且开发人员还能够方便地为它开发插件和扩展,从而增加Expr..._node.js后端框架及作用

Android Instrumentation模拟鼠标点击事件_android instrumentation sendstringsyn-程序员宅基地

文章浏览阅读5.6k次。看了几遍网上的博客一直没有 模拟出鼠标点击事件和按钮事件,后来抱着试试态度再重试的时候终于有所斩获。下面把具体的情况记录一下:首先我们必须了解类 Instrumentation:Instrumentation发送键盘鼠标事件:Instrumentation提供了丰富的以send开头的函数接口来实现模拟键盘鼠标,如下所述:sendCharacterSync(int keyCode)_android instrumentation sendstringsyn

JS刷新页面location.reload()用法_"onclick=\"location.reload()"-程序员宅基地

文章浏览阅读3.9k次。在javascript编程中,多使用location.reload实现页面刷新。 reload = function(){window.location.reload(); }onclick="reload();" 然后通过一个标签,设置 onclick 就可以调用了。window.location.reload();_"onclick=\"location.reload()"

ImageMagicK编译--合成图片为gif_magick 合并图像 成 gif-程序员宅基地

文章浏览阅读1.7k次。tar xvfz ImageMagick-6.6.9-5.tar.gzcd ImageMagick-6.6.9-5export CPPFLAGS=-I/home/admin/ImageMagick_build/includeexport LDFLAGS=-L/home/admin/ImageMagick_build/lib./configure --prefix=/home_magick 合并图像 成 gif

[.Net码农].NET Framework 4.5 DataRow 类_.net 声明datarow-程序员宅基地

文章浏览阅读1.1k次。http://msdn.microsoft.com/zh-cn/library/system.data.datarow(v=vs.110).aspx_.net 声明datarow

【山外笔记-计算机网络·第7版】第02章:物理层_物理层的电气连接方式可分为-程序员宅基地

文章浏览阅读1.6k次。本文下载链接:[学习笔记]第02章_物理层-打印版.pdf本章最重要的内容是:(1)物理层的任务。(2)几种常用的信道复用技术。(3)几种常用的宽带接入技术,主要是ADSL和FTTx。一、物理层的基本概念1、物理层简介(1)物理层在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。(2)物理层的作用是尽可能地屏蔽掉传输媒体和通信手段的差异。(3)用于物理层的协议..._物理层的电气连接方式可分为