1. 程式人生 > >通過okhttp3方式呼叫另一個專案上傳檔案

通過okhttp3方式呼叫另一個專案上傳檔案

OkHttp3檔案上傳介面

  專案中用到需要將檔案上傳到另一專案B上,專案B提供了一個檔案上傳的介面。就用到了在後臺介面中傳送post請求來將檔案傳過去。可以使用okhttp3的方式,非常簡單。

1、加依賴

  首先專案加如下依賴:

 <dependency>
      <groupId>com.squareup.okhttp3</groupId>
      <artifactId>okhttp</artifactId>
      <version>3.3.1</version>
  </dependency>

2、方法如下

/**
	 *
	 * @param url  遠端專案上傳介面地址
	 * @param uploadDir 檔案儲存型別路徑,用於不同模組下分資料夾管理
	 * @param baseFileUrl 本地檔案儲存基路徑
	 * @param relativeUrl 本地檔案儲存相對路徑
	 * @return  呼叫遠端專案上傳介面的返回結果
	 */
	public String uploadFilePost(String url,String uploadDir,String baseFileUrl,String relativeUrl){

		File temporaryFile = new File(baseFileUrl+relativeUrl);
		if(!temporaryFile.exists()){
			return "";
		}
		RequestBody requestBody = new MultipartBody.Builder()
				.addFormDataPart("uploadDir", uploadDir) //引數一
				.addFormDataPart("fileUrl", relativeUrl) //引數二
				.addFormDataPart("file", temporaryFile.getName(),  /RequestBody.create(MediaType.parse("application/octet-stream"),temporaryFile)) //引數三,是一個檔案
				.build();
		Request requestOk = new Request.Builder()
				.url(url)
				.post(requestBody) 
				.build(); //post請求含請求引數

		Response response;
		try {
			response = new OkHttpClient().newCall(requestOk).execute();
			String jsonString = response.body().string();
//			temporaryFile.delete();
			if(response.isSuccessful()){
				return jsonString;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "";
	}

  okhttp3傳送檔案就這樣,挺簡潔的。