1 public static Map executeDriverServer(String driverUrl, Map param,String multipart, String contentType,int timeout,String picPath) throwsException {2

3 String res = ""; //请求返回默认的支持json串

4

5 Map map = new HashMap();6 ContentType ctype = ContentType.create("content-disposition","UTF-8");7

8 Map map = new HashMap();9

10 HttpClientBuilder httpClientBuilder =HttpClientBuilder.create();11

12 CloseableHttpClient closeableHttpClient =httpClientBuilder.build();13

14 String res = ""; //请求返回默认的支持json串

15

16 HttpResponse httpResponse = null;17

18 try{19

20 HttpPost httpPost = newHttpPost(driverUrl);21

22 //设置请求和传输超时时间

23

24 RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(timeout).setConnectTimeout(5000).build();25

26 httpPost.setConfig(requestConfig);27

28 //BTW 4.3版本不设置超时的话,一旦服务器没有响应,等待时间N久(>24小时)。

29

30 if(httpPost!=null){31

32 if("formdata".equals(multipart)){33

34 MultipartEntityBuilder mentity =MultipartEntityBuilder.create().setMode(HttpMultipartMode.RFC6532);35

36 Set keyset =param.keySet();37

38 for(String key : keyset) {39

40 Object paramObj =Validate.notNull(param.get(key));41

42 if(paramObj instanceofMultipartFile) {43

44 mentity.addBinaryBody(key, ((MultipartFile) paramObj).getInputStream(),ctype,((MultipartFile) paramObj).getOriginalFilename());45

46 }else if(paramObj instanceofFile){47

48 mentity.addBinaryBody(key, (File)paramObj);//(key, new FileInputStream((File)paramObj),ctype,((File)paramObj).getName());

49

50 }else{51

52 mentity.addPart(key,newStringBody(paramObj.toString(),ctype));53

54 //mentity.addTextBody(key,paramObj.toString());

55

56 }57

58 logger.info("key::::"+key);59

60 logger.info("paramObj::::"+paramObj.toString());61

62 }63

64 HttpEntity entity =mentity.build();65

66 HttpUriRequest post =RequestBuilder.post().setUri(driverUrl).setEntity(entity).build();67

68 httpResponse =closeableHttpClient.execute(post);69

70 }else{71

72 HttpEntity entity =convertParam(param, contentType);73

74 httpPost.setEntity(entity);75

76 httpResponse =closeableHttpClient.execute(httpPost);77

78 }79

80 if(httpResponse == null) {81

82 throw new Exception("无返回结果");83

84 }85

86 //获取返回的状态码

87

88 int status =httpResponse.getStatusLine().getStatusCode();89

90 logger.info("Post请求URL="+driverUrl+",请求的参数="+param.toString()+",请求的格式"+contentType+",状态="+status);91

92 if(status ==HttpStatus.SC_OK){93

94 HttpEntity entity2 =httpResponse.getEntity();95

96 InputStream ins =entity2.getContent();97

98 res =toString(ins);99

100 ins.close();101

102 }else{103

104 InputStream fis =httpResponse.getEntity().getContent();105

106 Scanner sc = newScanner(fis);107

108 logger.info("Scanner:::::"+sc.next());109

110 logger.error("Post请求URL="+driverUrl+",请求的参数="+param.toString()+",请求的格式"+contentType+",错误Code:"+status);111

112 }113

114 map.put("code", String.valueOf(status));115

116 map.put("result", res);117

118 logger.info("执行Post方法请求返回的结果 = " +res);119

120 }121

122 } catch(ClientProtocolException e) {123

124 map.put("code", HttpClientUtil.CLIENT_PROTOCOL_EXCEPTION_STATUS);125

126 map.put("result", e.getMessage());127

128 } catch(UnsupportedEncodingException e) {129

130 map.put("code", HttpClientUtil.UNSUPPORTED_ENCODING_EXCEPTION_STATUS);131

132 map.put("result", e.getMessage());133

134 } catch(IOException e) {135

136 map.put("code", HttpClientUtil.IO_EXCEPTION_STATUS);137

138 map.put("result", e.getMessage());139

140 } finally{141

142 try{143

144 closeableHttpClient.close();145

146 } catch(IOException e) {147

148 logger.error("调用httpClient出错", e);149

150 throw new Exception("调用httpClient出错", e);151

152 }153

154 }155

156

157

158 private static String toString(InputStream in) throwsIOException{159

160 ByteArrayOutputStream os = newByteArrayOutputStream();161

162 byte[] b = new byte[1024];163

164 intlen;165

166 while((len = in.read(b)) != -1) {167

168 os.write(b, 0, len);169

170 }171

172 return os.toString("UTF-8");173

174 }175 }

java 远程接口 文件上传_java中远程http文件上传及file2multipartfile相关推荐

  1. java如何处理csv文件上传_java处理csv文件上传示例

    前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理. ReadCsvUtil工具类 package com.hanfengyeqiao.g ...

  2. java上传csv文件上传_java处理csv文件上传示例详解

    前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理. readcsvutil工具类 package com.hanfengyeqiao.g ...

  3. java http 上传大文件上传_java实现大文件的上传

    最近项目经理逼着让偶做树的展开,表嵌套表,可惜偶刚参加工作,水平低,这不在查资料嘛,可是不多久就传来了经理的叫嚣声,这么简单的东西,都一天了,你还没做完..................,哎真是郁闷 ...

  4. java上传文件限制大小_Java Web:附件上传,两种文件上传限制格式及大小方法,学习笔记文件操作【诗书画唱】...

    附件上传: package com.jy.controller; import java.io.File; import java.io.FileOutputStream; import java.i ...

  5. java 调用 swf 文件上传_java SpringMvc 实现文件在线预览(openoffice+swftools+flexpaper)

    项目需求:服务器接受的文件当下只能下载之后才能浏览内容,现需要后台能在线浏览到文件内容,避免繁琐无用文件下载操作. 通过几天网上资料搜索,目前免费的在线预览开发技术使用最多还是(openoffice+ ...

  6. java cropper 上传_java web 网站头像上传处理 (springmvc +bootstrap+cropper)

    制作头像上传.请根据您的实际需求,修改代码,不完全正确,仅供参考! 前端页面设计使用bootstrap ,头像预览和剪裁工具使用cropper 后台使用springmvc. 现在来看前端的页面设计 前 ...

  7. java读取 info.plist源码_Java 解析 IPA 文件,读取 Info.plist 信息-Go语言中文社区

    在做移动MDM功能的时候,就遇到了这样一个问题,当用户上传IPA文件时,我如何知道这个IPA文件的相关信息呢?IPA文件有一个很重要的文件Info.plist 就类似于Android程序的Manife ...

  8. java资源文件获取属性_Java读写资源文件类Properties

    Java中读写资源文件最重要的类是Properties 1) 资源文件要求如下: 1.properties文件是一个文本文件 2.properties文件的语法有两种,一种是注释,一种属性配置. 注  ...

  9. java实现对大文件切割下载_Java实现大文件的切割与合并操作示例

    Java实现大文件的切割与合并操作示例 发布时间:2020-09-27 02:25:08 来源:脚本之家 阅读:99 作者:HiBoyljw 本文实例讲述了Java实现大文件的切割与合并操作.分享给大 ...

最新文章

  1. checksum table 【转】
  2. 2018-10-15
  3. Scala中的下划线使用总结
  4. Docker环境安装
  5. 学习方法推荐——番茄工作法
  6. redis集群scan_RedisCluster的scan命令
  7. 基于AFD驱动的进程流量控制
  8. mysql navicat视图_navicat怎么创建视图
  9. 科学计算机js代码,利用js实现在线科学计算器代码
  10. 学c语言学生智商要搞么,作为一个学渣,哥来告诉你如果你智商不够该怎么办...
  11. 【雕爷学编程】Arduino动手做(76)---2路光耦继电器模块
  12. AutoSF- Searching Scoring Functions for Knowledge Graph Embedding
  13. aho-corasick php,更快的Aho-Corasick PHP实现
  14. excel查询oracle数据库,用Excel直接查询Oracle中的数据
  15. 为什么前端UI设计师给750PX的2倍设计稿?
  16. BZOJ 2565 最长双回文串 Manacher
  17. 八、STM32串口通信
  18. antd Mobile Tabs 垂直布局 后台传入数据
  19. R语言常见的数据类型及转换
  20. linux机器上crontab定时任务将日志输出到以日期命名的log文件

热门文章

  1. 第四节 管道符、重定向与环境变量。
  2. SYBYL原子类型及其含义
  3. 【概述】spark(一):spark特点、知识范畴、spark架构、任务提交流程、支持哪些运行环境
  4. 使用element-ui,一键复制粘贴实现上传功能
  5. 基于多态的职工管理系统
  6. Redis设置启动密码
  7. 解决 cnpm 不是内部命令的解决办法
  8. linux 之 scp 命令使用详解
  9. Laya 发布 OPPO 和 添加批处理文件
  10. 教你使用CDR变形工具制作螺旋绚丽特效