讯息:Java使用HttpClient以multipart/form-data向接口上传文件
(资料图片仅供参考)
前言
对接某公司的接口,涉及到资质上传等业务。需要对接他们的上传附件接口。JDK1.8 httpclient 4.x
封装httpclient方法
public static String postFileMultiPart(String url,Map reqParam) throws IOException{CloseableHttpClient httpclient = HttpClients.createDefault();try {// 创建httpHttpPost httppost = new HttpPost(url);//setConnectTimeout:设置连接超时时间,单位毫秒。setConnectionRequestTimeout:设置从connect Manager获取Connection 超时时间,单位毫秒。RequestConfig defaultRequestConfig = RequestConfig.custom().setConnectTimeout(5000).setConnectionRequestTimeout(5000).setSocketTimeout(15000).build();httppost.setConfig(defaultRequestConfig);MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();for(Map.Entry param : reqParam.entrySet()){multipartEntityBuilder.addPart(param.getKey(), param.getValue());}HttpEntity reqEntity = multipartEntityBuilder.build();httppost.setEntity(reqEntity);// 执行post请求.CloseableHttpResponse response = httpclient.execute(httppost);System.out.println("got response");try {// 获取响应实体HttpEntity entity = response.getEntity();if (entity != null) {return EntityUtils.toString(entity, Charset.forName("UTF-8"));}} finally {response.close();}} finally {// 关闭连接,释放资源try {httpclient.close();} catch (IOException e) {e.printStackTrace();}}return null;}
因为我方系统需要给前端提供上传接口 使用的MultipartFile
来接收文件所以这边需要MultipartFile转下File文件
public static File transferToFile(MultipartFile multipartFile) {//选择用缓冲区来实现这个转换即使用java 创建的临时文件 使用 MultipartFile.transferto()方法 。File file = null;try {String originalFilename = multipartFile.getOriginalFilename();//获取文件后缀String prefix = originalFilename.substring(originalFilename.lastIndexOf("."));file = File.createTempFile(originalFilename, prefix);multipartFile.transferTo(file);//删除临时文件file.deleteOnExit();} catch (IOException e) {e.printStackTrace();}return file;}
方法调用
public RestResponse attachment(MultipartFile file) throws Exception {Map reqParam = new HashMap<>();//普通类型reqParam.put("appId", new StringBody("appid", ContentType.MULTIPART_FORM_DATA));//文件reqParam.put("file", new FileBody(FileUploadUtils.transferToFile(file), ContentType.IMAGE_JPEG));String result = HttpClientUtil.postFileMultiPart("http://www.com/attachment", reqParam);}
后记
一顿操作对接完事。肯定有朋友问 为什么不让前端兄弟直接对接呢。因为对接的接口有权限校验。前端直接调会有泄漏token和秘钥的风险。
标签:
相关文章
讯息:Java使用HttpClient以multipart/form-data向接口上传文件
前言对接某公司的接口,涉及到资质上传等业务。需要对接他们的上传附件接口。JDK1 8httpclient4 x 封装ht
官方售价32.98万元起 捷尼赛思GV70燃油版上市_消息
5月22日,捷尼赛思GV70燃油版车型宣布正式上市,共推出2个配置车型,官方售价32 98-40 58万元。捷尼赛思GV7
e络盟开售TE Connectivity最新系列连接和传感器解决方案 环球热点评
安富利旗下全球电子元器件产品与解决方案分销商e络盟新增来自TEConnectivity的最新系列连接器和传感器解决
港股异动 | 华虹半导体(01347)涨超3% 订立两份工程总承包合同 当前快报
华虹半导体(01347)涨超3%。截至发稿,涨3 33%,报27 9港元,成交额1472 97万港元。
中国队击败韩国 实现苏迪曼杯3连冠 历史上第13次问鼎苏迪曼杯!
2023年苏迪曼杯决赛在苏州进行,中国羽毛球队vs韩国队,随着第三场女单较量陈雨菲击败安洗莹,国羽大比分3-
焦点速读:全球滚动:乡村振兴“十四五”需投入48万亿 如何撬动农村普惠金融?
5月20日,农业农村部计划财务司副司长王衍在2023清华五道口全球金融论坛上表示,农村金融当前最大的难点在
环球快看点丨198开头的手机号是哪里_198开头的手机号
1、是移动手机号。2、198为中国移动新增号段。3、相关信息如下:198开头的电话是中国移动的新号段,按正常
JDG夺冠现场采访-knight:这个冠军证明我有实力在世界赛拿成绩|快资讯
knight:这个冠军对我来说很重要吧,拿到了也非常开心,证明我是有实力在世界赛拿成绩的。Q:我们在今天的
坐轮椅拄拐杖 全国45名残友登峨眉金顶,爬凌云山看乐山大佛
5月21日是第33个全国助残日。在这个特殊的周末,四川乐山迎来了全国各地的45名双下肢障碍残友,两天时间里
赛福天最新公告:拟间接投资安徽美达伦 开展N型TOPCon电池业务
赛福天公告,公司控股孙公司赛福天新能源拟收购江苏达润持有的南京美达伦100%股权。股权转让完成后,赛福天
人手AutoGPT!让ChatGPT自选10万+AI模型,HuggingFace官方出品
前段时间,浙大微软团队提出的HuggingGPT在整个科技圈爆火。这个大模型协作系统利用ChatGPT作为控制器,随
世界新动态:9月19日更新消息 世界首套万吨级煤基可降解材料项目投产
据央视新闻,9月19日,国家能源集团榆林化工公司年产5万吨聚乙醇酸可降解材料示范项目打通全部生产流程,正
核苷酸二钠今日股价多少?A股核苷酸二钠上市公司有哪些?
核苷酸二钠今日股价多少?A股核苷酸二钠上市公司有哪些?,核苷酸二钠行业概念股票有:佳隆股份、康惠制药、