我尝试使用build.gradle文件将httpmime包含在我的应用程序中,并且一切正常。相反,当应用程序尝试实际使用MultipartEntityBuilder类时,日志上有一堆WARN级别消息,提示存在问题。
这是我的build.gradle的依赖摘录:
编译('org.apache.httpcomponents:httpmime:4. +'){ 排除模块:“ httpclient” }
错误如下:
10-09 13:39:37.367 2409-2426 / com.company.app W / dalvikvm:VFY:无法解析Lorg / apache / http / entity / ContentType中的静态字段6967(DEFAULT_BINARY); 10-09 13:39:37.367 2409-2426 / com.company.app W / dalvikvm:VFY:找不到签名中引用的类(Lorg / apache / http / entity / ContentType;) 10-09 13:39:37.367 2409-2426 / com.company.app W / dalvikvm:VFY:找不到签名中引用的类(Lorg / apache / http / entity / ContentType;) 10-09 13:39:37.367 2409-2426 / com.company.app W / dalvikvm:VFY:无法解析Lorg / apache / http / entity / ContentType中的静态字段6967(DEFAULT_BINARY); 10-09 13:39:37.367 2409-2426 / com.company.app W / dalvikvm:VFY:找不到签名中引用的类(Lorg / apache / http / entity / ContentType;) 10-09 13:39:37.367 2409-2426 / com.company.app W / dalvikvm:VFY:找不到签名中引用的类(Lorg / apache / http / entity / ContentType;) 10-09 13:39:37.367 2409-2426 / com.company.app W / dalvikvm:VFY:无法解析Lorg / apache / http / entity / ContentType中的静态字段6967(DEFAULT_BINARY); 10-09 13:39:37.367 2409-2426 / com.company.app W / dalvikvm:VFY:找不到签名中引用的类(Lorg / apache / http / entity / ContentType;) 10-09 13:39:37.367 2409-2426 / com.company.app W / dalvikvm:VFY:找不到签名中引用的类(Lorg / apache / http / entity / ContentType;) 10-09 13:39:37.377 2409-2426 / com.company.app W / dalvikvm:VFY:无法解析静态方法19478:Lorg / apache / http / util / Args; .notNull(Ljava / lang / Object; Ljava / lang / String;)Ljava / lang / Object; 10-09 13:39:37.377 2409-2426 / com.company.app W / dalvikvm:VFY:无法解析Lorg / apache / http / entity / ContentType中的静态字段6968(DEFAULT_TEXT); 10-09 13:39:37.377 2409-2426 / com.company.app W / dalvikvm:VFY:找不到签名中引用的类(Lorg / apache / http / entity / ContentType;) 10-09 13:39:37.377 2409-2426 / com.company.app W / dalvikvm:VFY:找不到签名中引用的类(Lorg / apache / http / entity / ContentType;)
java类:
导入android.util.Log; 导入java.io.IOException; 导入java.io.InputStream; 导入java.io.OutputStream; 导入java.net.HttpURLConnection; 导入java.net.URL; 导入org.apache.http.HttpEntity; 导入org.apache.http.entity.mime.MultipartEntityBuilder; 公共类FileUploader { private final static String BOUNDARY =“ __--__--__ SERVETHEOVERMIND -__-_”; public void uploadFile(String targetUrl,MultipartEntityBuilder upload,之后的UploadHandler){ Log.v(“ FileUploader”,“上传到” + targetUrl); HttpURLConnection con = null; OutputStream os = null; InputStream为= null; 尝试{ HttpEntity uploadEntity = upload.build(); URL postTo =新URL(targetUrl); con =(HttpURLConnection)postTo.openConnection(); con.setRequestMethod(“ POST”); con.setRequestProperty(“ Content-Type”,“ multipart / form-data; boundary =” + BOUNDARY);; con.setDoOutput(true); con.setDoInput(true); con.setUseCaches(false); con.addRequestProperty(“ Connection”,“保持活动”); con.setRequestProperty(“ Content-length”,String.valueOf(uploadEntity.getContentLength())); os = con.getOutputStream(); uploadEntity.writeTo(os); os.close(); con.connect(); 是= con.getInputStream(); after.consumeUploadResponse(is); con.disconnect(); } catch(IOException e){ e.printStackTrace(); } if(con!= null){ con.disconnect(); } if(os!= null){ 尝试{ os.close(); } catch(IOException e){ Log.v(“ Uploader”,“ Closed output stream”); } } if(is!= null){ 尝试{ is.close(); } catch(IOException e){ Log.v(“ Uploader”,“ Closed input stream”); } } } 公共接口UploadHandler { 公共无效的consumpUpUpResponse(InputStream流); } }
[编辑]正确的依存关系,按照答案
编译('org.apache.httpcomponents:httpmime:4. +'){ 排除模块:“ httpclient” } 编译('org.apache.httpcomponents:httpcore:4. +'){ 排除模块:“ httpclient” }
[第二编辑]仍然有问题-现在是这些其他缺失的部分,但是在后端可能有问题:
10-10 11:51:54.998 29597-29638 / com.company.app W / dalvikvm:VFY:无法解析Lorg / apache / http / message / BasicHeaderValueParser中的静态字段7465(INSTANCE); 10-10 11:51:54.998 29597-29638 / com.company.app W / dalvikvm:VFY:无法解析Lorg / apache / http / message / BasicHeaderValueFormatter中的静态字段7459(INSTANCE);
[还有另一个编辑]
在这种情况下,似乎剩下的最后一点对成功使用MultipartEntityBuilder没有任何影响。
您需要将httpcore-4.3.jar添加到Java构建路径。我遇到了同样的问题,添加了这个罐子之后,它消失了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句