2017年1月23日 星期一

在 Jersey Test Framework 中測試 Multipart Form Post 的環境設定

在 Jersey 上要使用 Multipart,需要額外做一點事情,包括引用 Multipart 的函式庫,並且設定要 Jersey 載入
不過當要使用 Jersey Test Framework 時,這個問題又稍微更麻煩了一點
因為 Jersey Test Framework 也是使用 Jersey,然後因此在 Client 端也額外需要做設定
除了 Jersey Test Framework 啟動的 Web Server 上需要動態註冊 Multipart 以外
還有 Jersey Test Framework 的 Client 也需要註冊 Multipart。(好麻煩 XD)

具體來說,就是需要在使用 Jersey Test Framework 的類別中,加入以下的設定:

@Override
public ResourceConfig configure() {
	return new ResourceConfig(Service.class)
			.register(MultiPartFeature.class);
}

@Override
public void configureClient(ClientConfig config) {
	config.register(MultiPartFeature.class);
}

其中 configure() 方法是在設定由 Jersey Test Framework 建立的 Web Server 的環境,在上面註冊 Multipart
而 configureClient() 方法則是在設定 Jersey Test Framework 建立的 Jersey Client 環境,在上面註冊 Multipart。

configure 沒有註冊的話,會出現 Injection error 的錯誤訊息,告知說無法正確注入像是 InputStream 這類 Multipart 的格式
而 configureClient() 沒有註冊的話,則是會出現 MessageBodyWriter not found for multipart/form-data 的錯誤訊息。

參考資料
  1. File upload along with other object in Jersey restful web service
  2. File Upload Failure by Jersey 2.0 Client
  3. Sending multiple files with Jersey: MessageBodyWriter not found for multipart/form-data

沒有留言: