public static String post(AppContext appContext, String url, Map<String, String> params, File file) throws Exception{ String userAgent = getUserAgent(appContext); String cookie = getCookie(appContext); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); if(params != null){ for(String key : params.keySet()){ //添加所有的文本字段 builder.addTextBody(key, params.get(key)); } } if(file != null){ FileBody fileBody = new FileBody(file); builder.addPart("face", fileBody); } HttpClient httpClient= getHttpClient(); HttpPost httpPost = getHttpPost(url, cookie, userAgent); HttpEntity entity = builder.build(); httpPost.setEntity(entity); try { HttpResponse response = httpClient.execute(httpPost); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ String responseBody = EntityUtils.toString(response.getEntity()); return responseBody; } else{ throw new Exception("服务器错误"); } } catch (IOException e) { e.printStackTrace(); return null; } }
现在android自带的httpClient版本是4.X的,我看了开源中国的源码。里面很多的类都已经没了。
上网搜了大部分都是基于完整版的,android自带的好像没有一些类
上面的这段代码,运行时报错
02-16 18:58:33.923: E/AndroidRuntime(6813): FATAL EXCEPTION: Thread-4485
02-16 18:58:33.923: E/AndroidRuntime(6813): java.lang.NoClassDefFoundError: org.apache.http.entity.ContentType
02-16 18:58:33.923: E/AndroidRuntime(6813): at org.apache.http.entity.mime.MultipartEntityBuilder.addTextBody(MultipartEntityBuilder.java:148)
02-16 18:58:33.923: E/AndroidRuntime(6813): at com.gojob.app.net.NetworkVisitor.post(NetworkVisitor.java:219)
02-16 18:58:33.923: E/AndroidRuntime(6813): at com.gojob.app.net.NetworkVisitor.login(NetworkVisitor.java:150)
02-16 18:58:33.923: E/AndroidRuntime(6813): at com.gojob.app.fragment.LoginFragment$1$1.run(LoginFragment.java:68)
于是,我把httpmime.jar 加进来。他还需要httpcore.jar.
但是还是报错
02-16 18:37:10.617: E/AndroidRuntime(23166): FATAL EXCEPTION: Thread-5712
02-16 18:37:10.617: E/AndroidRuntime(23166): java.lang.NoSuchFieldError: org.apache.http.message.BasicHeaderValueFormatter.INSTANCE
02-16 18:37:10.617: E/AndroidRuntime(23166): at org.apache.http.entity.ContentType.toString(ContentType.java:153)
02-16 18:37:10.617: E/AndroidRuntime(23166): at org.apache.http.entity.mime.MultipartFormEntity.<init>(MultipartFormEntity.java:52)
02-16 18:37:10.617: E/AndroidRuntime(23166): at org.apache.http.entity.mime.MultipartEntityBuilder.buildEntity(MultipartEntityBuilder.java:226)
02-16 18:37:10.617: E/AndroidRuntime(23166): at org.apache.http.entity.mime.MultipartEntityBuilder.build(MultipartEntityBuilder.java:230)
02-16 18:37:10.617: E/AndroidRuntime(23166): at com.gojob.app.net.NetworkVisitor.post(NetworkVisitor.java:235)
02-16 18:37:10.617: E/AndroidRuntime(23166): at com.gojob.app.net.NetworkVisitor.regist(NetworkVisitor.java:205)
02-16 18:37:10.617: E/AndroidRuntime(23166): at com.gojob.app.fragment.RegistFragment$1$1.run(RegistFragment.java:74)
我上网搜索了一下,是因为android自带的和我加的冲突了。请问怎么解决???
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Android没有httpcientmime的jar包,手动添加就ok加了还不行。还缺个http-core啥的。但是一加上去就是异常。你可以密我,我自己编译的jar包,发给你。我也碰到这个问题了,能也发我一个jar包吗?andlive@126.comdong.chun.xu@163.com谢谢大哥<divclass='ref'>