Android开发-网络通信1
使用 org.apache.http.client.HttpClient;
一开始从官网下载HttpClient 4.5:http://hc.apache.org/downloads.cgi ,解压之后添加到项目,添加 httppost.setEntity(entity) 后,一执行 httpclient.execute(post) 就报错,不添加还能正常Post。
查了不少 stackoverflow 的帖子,测试了无数方法,终于在十二小时后,发现了答案:http://stackoverflow.com/questions/29788479/android-httpclient-nosuchmethoderrororg-apache-http-entity-contenttype-create
1、要用 httpclient-android-4.3.5.1.jar ,而不是 httpclient-4.5.jar ,重点是 android ,不是版本;
2、要用 httpmime-4.3.6.jar ,而不是最新的 httpmime-4.5.jar 。上面 stackoverflow 的帖子说了,httpmime 和 httpclient-android 存在不兼容问题。
3、MultipartEntityBuilder ,而不是 MultipartEntity 。
代码参考 开源软件凡信:http://www.imgeek.org/forum.php?mod=viewthread&tid=763&extra=page%3D1
new Thread() {
@SuppressWarnings("rawtypes")
public void run() {
HttpClient client = new DefaultHttpClient();
MultipartEntityBuilder entity = MultipartEntityBuilder.create()
.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
Set keys = map.keySet();
if (keys != null) {
Iterator iterator = keys.iterator();
while (iterator.hasNext()) {
String key = (String) iterator.next();
String value = (String) map.get(key);
if (key.equals("file")) {
File file = new File(value);
entity.addPart(key, new FileBody(file));
} else {
try {
entity.addPart(key, new StringBody(value,
Charset.forName("UTF-8")));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
}
// 如果包含数组,要把包含的数组放进去,项目目前只有members这个数组,所有固定键值,为了更灵活
// 可以将传入自定义的键名......
if (has_Array) {
for (int i = 0; i < members.size(); i++) {
try {
entity.addPart(
"members[]",
new StringBody(members.get(i), Charset
.forName("UTF-8")));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
client.getParams().setParameter(
CoreConnectionPNames.CONNECTION_TIMEOUT, 30000);
// 请求超时
client.getParams().setParameter(
CoreConnectionPNames.SO_TIMEOUT, 30000);
/*HttpPost post = new HttpPost(url);
post.setEntity(entity);*/
HttpPost post = new HttpPost(url);
post.setEntity(entity.build());
Log.d("LoadDataFromServer","2");
StringBuilder builder = new StringBuilder();
try {
Log.d("LoadDataFromServer","3");
HttpResponse response = client.execute(post);
Log.d("LoadDataFromServer","4");
if (response.getStatusLine().getStatusCode() == 200) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(response.getEntity()
.getContent(), Charset.forName("UTF-8")));
for (String s = reader.readLine(); s != null; s = reader
.readLine()) {
builder.append(s);
}
String builder_BOM = jsonTokener(builder.toString());
System.out.println("返回数据是------->>>>>>>>"
+ builder.toString());
try {
JSONObject jsonObject = new JSONObject();
jsonObject = JSONObject.parseObject(builder_BOM);
Message msg = new Message();
msg.what = 111;
msg.obj = jsonObject;
handler.sendMessage(msg);
} catch (JSONException e) {
e.printStackTrace();
}
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
Android开发-网络通信1的更多相关文章
- Android开发-网络通信2
调试了三种通信方法:HttpClient.AsyncHttpClient 和 Volley . HttpClient 测试代码[1]: public class HttpUtil { public s ...
- 学Android开发,入门语言java知识点
学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...
- Android开发学习清单
目录: 第1章 Android应用与开发环境1.1 Android的发展和历史1.1.1 Android的发展和简介1.1.2 Android平台架构及特性1.2 搭建Android开发环境1.2.1 ...
- Android开发学习——搭建开发环境
在学校开课学习了android的一些简单的UI组件,布局,四大组件学习了2个,数据存储及网络通信,都是一些简单的概念,入门而已.许多东西需要自己去学习. 学习一下 Android开发环境的搭建,两种方 ...
- 【Android开发资料分享】自己整理的Android开发资料,非常全面
学习Android以来,不知不觉中收集了大量非常优秀的Android开发资料,一直没有系统的整理,最近抽时间把收藏夹中的资料做了一下整理,现在分享给大家,希望能够帮助到需要的人.这份资料我还会不断的更 ...
- [转]【eoeAndroid索引】史上最牛最全android开发知识汇总
一.开发环境搭建 (已完成) 负责人:kris 状态:已完成 所整理标签为:搭建 SDK JDK NDK Eclipse ADT 模拟器 AVD 调试器(DEBUG) DDMS 测试 日志 Logca ...
- Android开发系列之学习路线图
通过前面的3篇博客已经简单的介绍了Android开发的过程并写了一个简单的demo,了解了Android开发的环境以及一些背景知识. 接下来这篇博客不打算继续学习Android开发的细节,先停一下,明 ...
- 《Android开发艺术探索》读书笔记 (2) 第2章 IPC机制
2.1 Android IPC简介 (1)任何一个操作系统都需要有相应的IPC机制,Linux上可以通过命名通道.共享内存.信号量等来进行进程间通信.Android系统不仅可以使用了Binder机制来 ...
- Android 开发技术流程
1.网络连接通信 HttpClient 类通信(见<第一行代码> 郭霖2014.8月第一版P385) Android Asynchronous Http Client (见 http: ...
随机推荐
- xadmin快速搭建一个后台管理系统
环境:python3.5.2 ,django 2.0 ,xadmin2.0 Firsttly, 到 https://github.com/sshwsfc/xadmin/tree/django2上下载源 ...
- 如何用meavn构建mahout项目
(1)下载meavn 解压到D盘
- Linux服务器access_log日志分析及配置详解(一)
nginx的log日志分为access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器.ip和其他的访问信息 error log 则是记录服务器错误日 ...
- 安装和使用php的mcrypt扩展
程序员们在编写代码程序时,除了要保证代码的高性能之外,还有一点是非常重要的,那就是程序的安全性保障.PHP除了自带的几种加密函数外,还有功能更全面的PHP加密扩展库和. 其中,Mcrypt扩展库可以实 ...
- 学会JS的this这一篇就够了
转自:http://www.imooc.com/article/1758 以前看某本书上讲: 掌握了JS中this的用法才算真正的跨过了JS的门槛 我深以为是!但是JS的this却并不是那么简单的内容 ...
- 7. Reverse Integer(翻转整数)
Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Examp ...
- Unity本地数据存储---Sqlite和JSON
2014-05-04更新 SqliteDatabase.cs这个文件的初始方法有问题,具体是如果指定URL已经存在了DB文件,就不会重新覆盖DB文件. 这导致我们修改之后的DB文件无法产生效果. 本人 ...
- presto 0.166安装部署
系统:linux java:jdk 8,64-bit Connector:hive 分布式,node1-3 node1:Coordinator . Discovery service node2-3: ...
- react-native 解决Could not find method android() for arguments问题
运行命令行:react-native run-android 报错 Error:(23, 0) Could not find method android() for arguments [****] ...
- [one day one question] Iscroll 5.0 在chrome上无法滑动
问题描述: Iscroll 5.0 在chrome上无法滑动,不仅仅在chromePC的开发的时候,在手机上的chrome也有同样的问题,这怎么破? 解决方案: // 关闭 PointerEvent ...