傳送http請求,獲取返回的zip包並讀取包內的檔案
//接收http請求並將需要的檔案打包返回 public void mark(HttpServletResponse response) { try { response.setContentType("multipart/form-data"); //獲取要打包的多個檔案 File file1 = new File("C:/Users/xhc/Desktop/a/spring-quartz.xml"); File file2 = new File("C:/Users/xhc/Desktop/a/spring-servlet.xml"); List<File> fileList = new ArrayList<>(); fileList.add(file1); fileList.add(file2); out = response.getOutputStream(); zos = new ZipOutputStream(out); for (File file : fileList) { ZipEntry entry = new ZipEntry(file.getName()); zos.putNextEntry(entry); byte [] bytes = new byte[1024]; int len; FileInputStream in = new FileInputStream(file); while((len = in.read(bytes)) != -1) { zos.write(bytes, 0, len); } zos.closeEntry(); in.close(); } } catch (Exception e) { }finally { if(zos != null) { try { zos.close(); } catch (IOException e) { e.printStackTrace(); } } } }
//傳送http請求,並處理返回的zip包 public static void multipartRequestForMark(String url, Map<String, String> params, String[] filePath, String[] fileName){ HttpPost httpPost = getHttpPost(url, null); MultipartEntityBuilder builder = MultipartEntityBuilder.create().setCharset(UTF_8); String value = ""; if (params != null) { for (String key : params.keySet()) { value = (String)params.get(key); if (value == null) value = ""; builder.addTextBody(key, value, ContentType.APPLICATION_JSON); } } if ((filePath != null) && (fileName != null) && (filePath.length == fileName.length)) { for (int i = 0; i < filePath.length; ++i) { builder.addBinaryBody("file" + i, new File(filePath[i]), ContentType.APPLICATION_OCTET_STREAM, fileName[i]); } } HttpEntity multipart = builder.build(); httpPost.setEntity(multipart); Map<String, Object> map = new HashMap<>(); try { CloseableHttpResponse response = httpclient.execute(httpPost); try { assertStatus(response);//判斷返回的code是否為200 HttpEntity entity = response.getEntity();//從response裡獲取資料實體 InputStream in = entity.getContent();//獲取資料流 Charset c = Charset.forName("UTF-8"); ZipInputStream zin = new ZipInputStream(in, c);//封裝成zip輸入流 BufferedOutputStream bos = null; ZipEntry ze; //檔案存放地址 String path = "C:/Users/xhc/Desktop/b/"; File file = null; List<File> listFile = new ArrayList<>(); try { while((ze = zin.getNextEntry()) != null) {//迴圈zip輸入流,獲取每一個檔案實體 file = new File(path + ze.getName());//生成file(如果檔案路徑不存在,先建立) FileOutputStream fos = new FileOutputStream(file); int len; byte [] bytes = new byte[2048]; bos = new BufferedOutputStream(fos,2048); while((len = zin.read(bytes, 0, 2048)) != -1) { bos.write(bytes, 0, len); } bos.flush(); bos.close(); } zin.close();//關閉輸入流 } catch (Exception e) { logger.error("異常 " + e); } } finally { if (response != null) response.close(); } } catch (ClientProtocolException e) { logger.error("檔案上傳呼叫發生ClientProtocolException異常:" + e); } catch (IOException e) { logger.error("檔案上傳呼叫發生IOException異常:{}" + e); } }
相關推薦
傳送http請求,獲取返回的zip包並讀取包內的檔案
//接收http請求並將需要的檔案打包返回 public void mark(HttpServletResponse response) { try { response.setContentType("multipart/form-data");
java中使用Apache HttpClient傳送Http請求,並獲取返回結果
傳送http請求可以寫成一個工具類,HttpClient可以使用連線池建立,這樣的好處是我們可以自己定義一些配置,比如請求超時時間,最大連線數等等。 public class HttpUtil { private static CloseableHttpClient http
Java傳送Http請求,解析html返回
宣告:本文系JavaEye網站釋出的原創部落格文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任! 今天是2008年7月7日星期一,下午一直在學校做個人開始頁面。因為離不開google的翻譯,所以想把google的翻譯整合到我的開始頁面中來,於是乎就遇到了一個
JAVA傳送HTTP請求,並接受返回內容
JDK 中提供了一些對無狀態協議請求(HTTP )的支援,下面我就將我所寫的一個小例子(元件)進行描述: 首先讓我們先構建一個請求類(HttpRequester )。 該類封裝了 JAVA 實現簡單請求的程式碼,如下:package atco.http; import java.io.BufferedR
jmeter 傳送http請求,並把獲取到的請求的訂單資訊儲存到檔案中
有一個任務,需要頻繁傳送訂單請求,並分析訂單請求中有沒有存在重複訂單號,思路是用jmeter 傳送http請求,使用正則表示式獲取到訂單號,並把訂單號和執行緒號作為引數提供給java請求,在java請求中把訂單號寫到包括有執行緒號的命名檔案中。完成出來的樣子是這樣的 步驟如下: 1、Jme
使用HttpClient傳送http請求,並解析從伺服器端返回的資料
使用Apache的httpclient包可以模擬HTTP請求的傳送, get和post均可以。最方便的地方就是請求struts等web框架進行測試,省去了做測試頁面的差事。import java.io.IOException; import java.io.InputStr
[python]socket傳送http請求,非阻塞io的一個例子
#通過非阻塞io實現http請求 import socket from urllib.parse import urlparse #使用非阻塞io完成http請求 def get_url(url): #通過socket請求html url
JAVA傳送http請求,呼叫http介面與方法
1.傳送POST請求,無引數名呼叫。 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import
Java 傳送http請求,上傳檔案
package wxapi.WxHelper; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.F
HttpClient 傳送Json請求,結果返回Json
public static JSONObject post(String url,JSONObject json){ HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(
【Oracle】UTL_HTTP 傳送http請求,定時任務job+儲存過程PROCEDURE
總覺得這種方式心裡用著沒譜,因為對他並不瞭解。比如是否涉及到資源釋放啊,異常捕獲啊,是否能穩定高併發執行啊。大家也可以看一下 幫我優化優化。 首先1·要使用 --開啟Oracle ACL許可權 /*
java 實現ajax傳送http請求,直接訪問伺服器
//-----------------------------客戶端請求時需要把中文轉碼 --------------------- /** * 向指定URL傳送POST方法的請求
程式碼中傳送http請求, java.lang.IllegalArgumentException: Illegal character in query at index...,非法字元錯誤解決辦法
產生原因:url中有漢字或特殊字元(非字母和數字的字元),沒有轉碼。 解決辦法:將帶有特殊字元或漢字的引數進行轉碼,再放入url傳送即可。 例如:param1 = URLEncoder.encode(param1, "UTF-8");
java傳送http請求獲取響應結果【工具包系列】
import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.NameValuePair; import org.apache.log4j.Logger;
Java在傳送HTTP請求時,遇到身份驗證無法獲取到response內容的解決方法
問題描述: 有些網站在接受HTTP請求時會先讓你進行身份認證,所以在用Java傳送HTTP請求時會出現401錯誤碼,無法正常獲取到想要的內容。 解決方法: 我以傳送get請求為例,說明解決方法。 public static String getMethod(Strin
axios傳送post請求,thinkphp獲取不到引數
我使用的是vue-cli 可能是傳送的資料格式不對,需要新增頭資訊(content-type)。引入qs外掛,用qs轉變資料格式。 import qs from 'qs'; axios.post('/api/xxx/xxx/xxx?'+qs.stringify(newChild),
Python傳送Http請求時,提交中文或者符號中文編碼問題的解決方法
前言 博主最近在用python3比較強大的Django開發web的時候,發現一些url的編碼問題,在瀏覽器提交請求api時,如果url中包含漢子,就會被自動編碼掉。呈現的結果是 ==> %xx%xx%xx。如果出現3個百分號為一個原字元則為utf8編碼,如果2個百分號則為gb2312編碼。
Java後臺傳送post請求,並接收返回資訊
/** * 向指定的 URL傳送遠端POST方法的請求 * @param url傳送請求的 URL * @param json請求引數, * @return 所代表遠端資源的響應結果 */ public static JSONObject sendPost(String
javaweb總結(九)--從jsp頁面傳送ajax請求,servlet接受引數並返回json資料
來自:https://blog.csdn.net/yanghan1222/article/details/78447231 今天遇到了問題把我難住了,解決之後就趕緊來記下來 這是一個很簡單的更新使用者的問題 先來看看專案所需jar包 接下來就是jsp頁面的東西
java 傳送http請求 返回字串 再進行解析(略)
package taobao.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.InputStreamR