httpClient,流作为文件上传

时间:2022-08-15 23:51:35

重构一段代码的经历。

源代码,400多行。跳来跳出真心看不懂写的是什么。

主要是把数据加密,写入文件,然后发送给第三方。

按照第三方的给的 dome,你必须  三次文件创建,三次文件写入,三次文件读取。好乱,性能非常差,而且代码杂乱无章,温馨

作为一名有洁癖的程序员,绝对要有统筹,要结构化。

真心不知道,为什么第三方用这么愚蠢的解决方案。我有N种方案处理。但是绝对不会用这么愚蠢的方案。

 伦理片 http://www.dotdy.com/  

不说,上代码

Java代码   httpClient,流作为文件上传
  1. package com  
  2.   
  3.   
  4. import java.io.File;  
  5. import java.io.FileInputStream;  
  6. import java.io.IOException;  
  7. import java.io.OutputStream;  
  8. import org.apache.http.entity.mime.content.FileBody;  
  9. import org.apache.http.util.Args;  
  10. import org.apache.log4j.Logger;  
  11.   
  12. public class OldFileBody extends FileBody {  
  13.   
  14.   
  15.     private static Logger logger = Logger.getLogger(OldFileBody.class);  
  16.     private byte[] text;     
  17.     private static File file = new File("");  
  18.   
  19.     private String fileName ;  
  20.     public OldFileBody(String text,String fileName) {  
  21.         this(text.getBytes(), fileName);  
  22.     }  
  23.   
  24.       
  25.   
  26.     public OldFileBody(byte[] text,String fileName) {  
  27.         super(file);  
  28.         this.text = text;  
  29.         this.fileName = fileName;  
  30.     }  
  31.   
  32.   
  33.     public long getContentLength() {  
  34.         return this.text.length;  
  35.     }  
  36.     public String getFilename() {  
  37.         return fileName;  
  38.     }  
  39.   
  40.     public void writeTo(final OutputStream out) throws IOException {  
  41.         Args.notNull(out, "Output stream");  
  42.         out.write(text);  
  43.     }  
  44. }  
  45.   
  46.   
  47.   
  48. CloseableHttpClient httpclient = HttpClientBuilder.create().build();  
  49.         CloseableHttpResponse response = null;  
  50.         try {  
  51.             HttpPost httppost = new HttpPost(url);  
  52.   
  53.             HttpEntity req = MultipartEntityBuilder.create().setMode(HttpMultipartMode.BROWSER_COMPATIBLE)  
  54.                     .addPart("files"new OldFileBody(bos.toByteArray(),"de.txt.gz"))  
  55.                     .build();  
  56.             httppost.setEntity(req);  
  57.   
  58.             response = httpclient.execute(httppost);  
  59.   
  60.             HttpEntity re = response.getEntity();  
  61.             System.out.println(response.getStatusLine());  
  62.             if (re != null) {  
  63.                 System.out.println(  
  64.                         "Response content: " + new BufferedReader(new InputStreamReader(re.getContent())).readLine());  
  65.             }  
  66.             EntityUtils.consume(re);  
  67.         } finally {  
  68.             try {  
  69.                 response.close();  
  70.             } catch (Exception e) {  
  71.                 e.printStackTrace();  
  72.             }  
  73.         }  

 


相关文章