001/** 002 * Copyright (c) 2015-2022, Michael Yang 杨福海 (fuhai999@gmail.com). 003 * <p> 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * <p> 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * <p> 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package io.jboot.utils; 017 018import io.jboot.components.http.JbootHttpManager; 019import io.jboot.components.http.JbootHttpRequest; 020import io.jboot.components.http.JbootHttpResponse; 021 022import java.io.File; 023import java.util.HashMap; 024import java.util.Map; 025 026/** 027 * 功能更强大的http工具类 028 * 1、支持 http get post 操作 029 * 2、支持文件下载 和 文件上传 030 * 3、支持自定义https文件证书(可以用在类似调用支付相关接口等) 031 */ 032public class HttpUtil { 033 034 /** 035 * http get操作 036 * 037 * @param url 038 * @return 039 */ 040 public static String httpGet(String url) { 041 return httpGet(url, null); 042 } 043 044 /** 045 * http get操作 046 * 047 * @param url 048 * @param paras 049 * @return 050 */ 051 public static String httpGet(String url, Map<String, Object> paras) { 052 return httpGet(url, paras, null); 053 } 054 055 056 /** 057 * 发送可以配置headers 的 http请求 058 * 059 * @param url 060 * @param paras 061 * @param headers 062 * @return 063 */ 064 public static String httpGet(String url, Map<String, Object> paras, Map<String, String> headers) { 065 JbootHttpRequest request = JbootHttpRequest.create(url, paras, JbootHttpRequest.METHOD_GET); 066 request.addHeaders(headers); 067 JbootHttpResponse response = handle(request); 068 return response.isError() ? null : response.getContent(); 069 } 070 071 /** 072 * http post 操作 073 * 074 * @param url 075 * @return 076 */ 077 public static String httpPost(String url) { 078 return httpPost(url, null, null, null); 079 } 080 081 /** 082 * http post 操作 083 * 084 * @param url 085 * @return 086 */ 087 public static String httpPost(String url, String postData) { 088 return httpPost(url, null, null, postData); 089 } 090 091 092 /** 093 * Http post 操作 094 * 095 * @param url 096 * @param paras post的参数,可以是文件 097 * @return 098 */ 099 public static String httpPost(String url, Map<String, Object> paras) { 100 return httpPost(url, paras, null, null); 101 } 102 103 /** 104 * Http post 操作 105 * 106 * @param url 107 * @param paras 108 * @param postData 109 * @return 110 */ 111 public static String httpPost(String url, Map<String, Object> paras, String postData) { 112 return httpPost(url, paras, null, postData); 113 } 114 115 /** 116 * Http post 操作 117 * 118 * @param url 119 * @param paras 120 * @param headers 121 * @return 122 */ 123 public static String httpPost(String url, Map<String, Object> paras, Map<String, String> headers) { 124 return httpPost(url, paras, headers, null); 125 } 126 127 128 /** 129 * Http post 操作 130 * 131 * @param url 132 * @param paras 133 * @param headers 134 * @param postData 135 * @return 136 */ 137 public static String httpPost(String url, Map<String, Object> paras, Map<String, String> headers, String postData) { 138 JbootHttpRequest request = JbootHttpRequest.create(url, paras, JbootHttpRequest.METHOD_POST); 139 request.setBodyContent(postData); 140 request.addHeaders(headers); 141 JbootHttpResponse response = handle(request); 142 return response.isError() ? null : response.getContent(); 143 } 144 145 146 /** 147 * 下载文件 148 * 149 * @param url 150 * @param toFile 151 * @return 152 */ 153 public static boolean download(String url, File toFile) { 154 return download(url, null, null, toFile); 155 } 156 157 158 /** 159 * 下载文件 160 * 161 * @param url 162 * @param paras 163 * @param toFile 164 * @return 165 */ 166 public static boolean download(String url, Map<String, Object> paras, File toFile) { 167 return download(url, paras, null, toFile); 168 } 169 170 171 /** 172 * 下载文件 173 * 174 * @param url 175 * @param paras 176 * @param headers 177 * @param toFile 178 * @return 179 */ 180 public static boolean download(String url, Map<String, Object> paras, Map<String, String> headers, File toFile) { 181 JbootHttpRequest request = JbootHttpRequest.create(url, paras, JbootHttpRequest.METHOD_GET); 182 request.setDownloadFile(toFile); 183 request.addHeaders(headers); 184 return handle(request).getError() == null; 185 } 186 187 /** 188 * 上传文件 189 * 190 * @param url 191 * @return 192 */ 193 public static String upload(String url, File file) { 194 return upload(url, null, null, file); 195 } 196 197 198 /** 199 * 上传文件 200 * 201 * @param url 202 * @param paras 203 * @param file 204 * @return 205 */ 206 public static String upload(String url, Map<String, Object> paras, File file) { 207 return upload(url, paras, null, file); 208 } 209 210 211 /** 212 * 上传文件 213 * 214 * @param url 215 * @param paras 216 * @param headers 217 * @param file 218 * @return 219 */ 220 public static String upload(String url, Map<String, Object> paras, Map<String, String> headers, File file) { 221 Map<String, Object> newParas = new HashMap(); 222 if (paras != null) { 223 newParas.putAll(paras); 224 } 225 226 newParas.put("uploadFile", file); 227 228 JbootHttpRequest request = JbootHttpRequest.create(url, newParas, JbootHttpRequest.METHOD_POST); 229 request.addHeaders(headers); 230 JbootHttpResponse response = handle(request); 231 return response.isError() ? null : response.getContent(); 232 } 233 234 235 public static JbootHttpResponse handle(JbootHttpRequest request) { 236 return JbootHttpManager.me().getJbootHttp().handle(request); 237 } 238 239 240}