0
我在使用Android上的Jersey客戶端API時出現Multipart-form-data POST請求的問題。我一直在關注網絡上的各種示例,它們在實現方面都非常相似。Jersey客戶端+多部分表單數據+ MessageBodyWriter問題
Client client = createClientInstance();
WebResource r = client.resource(BASEURL).path("DataUpload");
ClientResponse post;
try {
FormDataMultiPart multiPart = new FormDataMultiPart();
multiPart.field("account", account);
multiPart.field("checksum", checksum);
multiPart.bodyPart(new FileDataBodyPart("file", file, MediaType.APPLICATION_OCTET_STREAM_TYPE));
post = r.type(MediaType.MULTIPART_FORM_DATA)
.accept(MediaType.TEXT_PLAIN)
.post(ClientResponse.class, multiPart);
} catch (ClientHandlerException e) {
Log.e(TAG, e.getLocalizedMessage());
} finally {
client.destroy();
}
當我執行我的設備上運行此代碼,我帶有一個例外:
javax.ws.rs.WebApplicationException: java.lang.IllegalArgumentException: No MessageBodyWriter for body part of type 'java.io.File' and media type 'application/octet-stream'
我想澤西本來是要處理的文件對象無需任何額外的配置。去除bodypart線將讓澤西島提出請求,但這消除了這一點。
我有我的構建路徑這些庫(它們用的Maven被拉):
- 球衣,客戶1.14
- 球衣核1.14
- 球衣 - 多1.14
- mimepull-1-6
http://stackoverflow.com/questions/9710953/trasferring-files-and-data-with-jersey應該有幫助嗎? – smk
看來我的問題與Android的Jersey類加載不正確有關。我正在使用已列出的解決方法[這裏](http://stackoverflow.com/questions/9342506/jersey-client-on-android-nullpointerexception/10676918#10676918)但該解決方案是不完整的,因爲它不是加載所有的我的應用程序需要的類。當我添加[最初列出的完整類](http://jersey.576304.n2.nabble.com/java-lang-NullPointerException-on-Android-tt4212447.html#a5459910)時,它能夠完成上傳文件。 – KC89