Jelajahi Sumber

update http client tool

reghao 3 tahun lalu
induk
melakukan
7d9505e6ce

+ 11 - 1
jdk/src/main/java/cn/reghao/jutil/jdk/http/UploadParam.java

@@ -8,7 +8,8 @@ import java.util.Map;
  * @date 2021-12-28 13:06:23
  */
 public class UploadParam {
-    private final File file;
+    private File file;
+    private byte[] bytes;
     private final String mimeType;
     private Map<String, String> textParams;
 
@@ -17,10 +18,19 @@ public class UploadParam {
         this.mimeType = mimeType;
     }
 
+    public UploadParam(byte[] bytes, String mimeType) {
+        this.bytes = bytes;
+        this.mimeType = mimeType;
+    }
+
     public File getFile() {
         return file;
     }
 
+    public byte[] getBytes() {
+        return bytes;
+    }
+
     public String getMimeType() {
         return mimeType;
     }

+ 41 - 3
tool/src/main/java/cn/reghao/jutil/tool/http/DefaultWebRequest.java

@@ -12,6 +12,8 @@ import org.apache.http.client.methods.*;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.entity.mime.HttpMultipartMode;
 import org.apache.http.entity.mime.MultipartEntityBuilder;
+import org.apache.http.entity.mime.content.ByteArrayBody;
+import org.apache.http.entity.mime.content.ContentBody;
 import org.apache.http.entity.mime.content.FileBody;
 import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.util.EntityUtils;
@@ -87,9 +89,45 @@ public class DefaultWebRequest extends BaseWebRequest implements WebRequest {
         builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
         builder.setCharset(StandardCharsets.UTF_8);
 
-        File file = uploadParam.getFile();
-        FileBody fileBody = new FileBody(file, uploadParam.getMimeType());
-        builder.addPart("file", fileBody);
+        ContentBody contentBody;
+        if (uploadParam.getFile() != null) {
+            contentBody = new FileBody(uploadParam.getFile(), uploadParam.getMimeType());
+        } else if (uploadParam.getBytes() != null) {
+            contentBody = new ByteArrayBody(uploadParam.getBytes(), uploadParam.getMimeType());
+        } else {
+            return new WebResponse(600, "not data in UploadParam");
+        }
+
+        /*File file = uploadParam.getFile();
+        FileBody fileBody = new FileBody(file, uploadParam.getMimeType());*/
+        builder.addPart("file", contentBody);
+        Map<String, String> map = uploadParam.getTextParams();
+        if (map != null) {
+            map.forEach(builder::addTextBody);
+        }
+
+        HttpPost post = new HttpPost(url);
+        if (headers != null) {
+            headers.forEach(post::addHeader);
+        }
+        post.setEntity(builder.build());
+        try (CloseableHttpResponse response = client.execute(post)) {
+            int statusCode = response.getStatusLine().getStatusCode();
+            String body = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);;
+            return new WebResponse(statusCode, body);
+        } catch (Exception e) {
+            return new WebResponse(600, e.getMessage());
+        }
+    }
+
+    public WebResponse upload1(String url, UploadParam uploadParam) {
+        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+        builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
+        builder.setCharset(StandardCharsets.UTF_8);
+
+        byte[] bytes = uploadParam.getBytes();
+        ByteArrayBody byteArrayBody = new ByteArrayBody(bytes, uploadParam.getMimeType());
+        builder.addPart("file", byteArrayBody);
 
         Map<String, String> map = uploadParam.getTextParams();
         if (map != null) {

+ 1 - 1
web/src/main/java/cn/reghao/jutil/web/ServletUtil.java

@@ -22,7 +22,7 @@ public class ServletUtil {
             return Long.parseLong(userId);
         }
 
-        return 0L;
+        return -1L;
     }
 
     public static HttpSession getSession() {