asynchttpclient android studio,网络请求框架----AsyncHttpClient的get,post和图片上传服务器...

async-http-client库是一个基于回调函数的Http异步通信客户端Android组件,是在Apache的HttpClient库的基础上开发构建而成的。

Eclipse使用:导入android-async-http-1.4.4.jar包 http://download.csdn.net/detail/dickyqie/9662215

AndroidStudio: gradle中引入 compile 'com.loopj.android:android-async-http:1.4.8'

功能特色

·         利用版4.3.6上游HttpClient代替Android提供defaulthttpclient

·         兼容AndroidAPI 23高

·         做异步HTTP请求处理的响应匿名回调

·         HTTP请求发生UI线程之外

·         请求使用线程池限制并发资源使用情况

·         get /后参数生成器( RequestParams )

·         多文件上传没有额外的第三方库

·         JSON上传流没有额外的图书馆

·         处理循环和相对重定向

·         小的开销给你的应用程序只90kb一切

·         自动智能请求重试次数质量不一的移动连接优化

·         自动gzip响应解码速度超快的请求支持

·         二进制协议通信binaryhttpresponsehandler

·         内置的响应分析JSON与jsonhttpresponsehandler

·         节能反应直接进入文件fileasynchttpresponsehandler

·         大的持久性Cookie,保存cookie到你的应用程序的SharedPreferences

·         杰克逊JSON集成,gson或其他JSON序列化库(德)basejsonhttpresponsehandler

·         与SAX解析器支持saxasynchttpresponsehandler

·         语言和内容编码的支持,不仅仅是UTF-8

效果图:

案例如下:

1 public class MainActivity extends Activity implements OnClickListener {

2

3     public static AsyncHttpClient mHttpc = new AsyncHttpClient();

4

5     private TextView mTextView;

6

7     @Override

8     protected void onCreate(Bundle savedInstanceState) {

9         super.onCreate(savedInstanceState);

10         setContentView(R.layout.activity_asynchttpclict);

11         initView();

12     }

13

14     private void initView() {

15         findViewById(R.id.btn1).setOnClickListener(this);

16         findViewById(R.id.btn2).setOnClickListener(this);

17         findViewById(R.id.btn3).setOnClickListener(this);

18         findViewById(R.id.btn4).setOnClickListener(this);

19         mTextView=(TextView) findViewById(R.id.Text);

20     }

21

22     @Override

23     public void onClick(View v) {

24         switch (v.getId()) {

25         case R.id.btn1:

26             showHttpGet1();

27             break;

28         case R.id.btn2:

29             showHttpGet2("https://www.baidu.com");

30             break;

31         case R.id.btn3:

32             showHttpGet3();

33             break;

34         case R.id.btn4:

35             showHttpPost();

36             break;

37         case R.id.btn5:

38

39         case R.id.btn6:

40

41         default:

42             break;

43         }

44

45     }

46

47     private void showHttpGet1() {

48         AsyncHttpClient client = new AsyncHttpClient();

49         client.get("https://www.baidu.com", new AsyncHttpResponseHandler() {

50             @Override

51             public void onStart() { // 请求启动 请求前

52             }

53

54             @Override

55             public void onSuccess(int statusCode, Header[] headers,

56                     byte[] responseBody) { // 请求成功

57                 StringBuffer result = new StringBuffer("");

58                 int length = responseBody.length;

59                 for (int i = 0; i < length; i++) {

60                     result.append((char) (responseBody[i] & 0xff));

61                 }

62                 Toast.makeText(MainActivity.this, "结果:" + result.toString(), 2)

63                         .show();

64                 mTextView.setText("结果:" +result.toString());

65             }

66

67             @Override

68             public void onFailure(int statusCode, Header[] headers,

69                     byte[] responseBody, Throwable error) // 请求失败

70             {

71

72             }

73

74             public void onRetry() { // 重试

75

76             }

77

78             @Override

79             public void onProgress(int bytesWritten, int totalSize) { // 请求进度

80

81             }

82

83             @Override

84             public void onFinish() { // 请求完成

85

86             }

87         });

88     }

89

90     public void showHttpGet2(String uri) {

91         mHttpc.get(uri, null, new AsyncHttpResponseHandler() { // 请求失败

92                     @Override

93                     public void onFailure(int arg0, Header[] arg1, byte[] arg2,

94                             Throwable arg3) {

95                     }

96

97                     @Override

98                     public void onSuccess(int arg0, Header[] arg1,

99                             byte[] responseBody) {

100                         StringBuffer result = new StringBuffer("");

101                         int length = responseBody.length;

102                         for (int i = 0; i < length; i++) {

103                             result.append((char) (responseBody[i] & 0xff));

104                         }

105                         Toast.makeText(MainActivity.this,

106                                 "结果:" + result.toString(), 2).show();

107                         mTextView.setText("结果:" +result.toString());

108                     }

109                 });

110     }

111

112     private void showHttpGet3() {

113         AsyncHttpClient client = new AsyncHttpClient();

114         RequestParams params = new RequestParams();

115         params.put("q", "test");

116         params.put("showapi_appid", "11548");

117         // 当前时间

118         params.put("showapi_timestamp", "20160511151954");

119         params.put("showapi_sign", "bb1d15ab7ce646ec87cc89d684ca4bcb");

120         client.get("https://route.showapi.com/32-9", params,

121                 new TextHttpResponseHandler() {

122                     @Override

123                     public void onSuccess(int statusCode, Header[] headers,

124                             String response) {

125                         Toast.makeText(MainActivity.this,

126                                 "结果:" + response.toString(), 2).show();

127                         mTextView.setText("结果:" +response.toString());

128                     }

129

130                     @Override

131                     public void onFailure(int statusCode, Header[] headers,

132                             String responseBody, Throwable error) {

133                         Log.i("ERROR", error.toString());

134                     }

135                 });

136     }

137

138     /*

139      * 获得字符串

140      */

141     public void showHttpPost() {

142         AsyncHttpClient client = new AsyncHttpClient();

143         RequestParams params = new RequestParams();

144         params.put("q", "test");

145         params.put("showapi_appid", "11548");

146         // 当前时间

147         params.put("showapi_timestamp", "20160511151954");

148         params.put("showapi_sign", "bb1d15ab7ce646ec87cc89d684ca4bcb");

149         client.post("https://route.showapi.com/32-9", params,

150                 new AsyncHttpResponseHandler() {

151

152                     @Override

153                     public void onFailure(int arg0, Header[] arg1,

154                             byte[] responseBody, Throwable arg3) {

155

156                     }

157

158                     @Override

159                     public void onSuccess(int arg0, Header[] arg1,

160                             byte[] responseBody) {

161                         StringBuffer result = new StringBuffer("");

162                         int length = responseBody.length;

163                         for (int i = 0; i < length; i++) {

164                             result.append((char) (responseBody[i] & 0xff));

165                         }

166                         Toast.makeText(MainActivity.this,

167                                 "结果:" + result.toString(), 2).show();

168                         mTextView.setText("结果:" +result.toString());

169                     }

170                 });

171

172     }

173

174

175

176     /**

177      * 上传单个文件

178      */

179     private void showFile() {

180         File myFile = new File("filePath");// filePath--->文件路径

181         RequestParams params = new RequestParams();

182         try {

183             params.put("time", "20160511151954");

184             params.put("sign", "bb1d15ab7ce646ec87cc89d684ca4bcb");

185             params.put("filename", myFile);

186             AsyncHttpClient client = new AsyncHttpClient();

187             client.post("url", params, new AsyncHttpResponseHandler() {

188

189                 @Override

190                 public void onFailure(int arg0, Header[] arg1, byte[] arg2,

191                         Throwable arg3) {

192

193                 }

194

195                 @Override

196                 public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {

197

198                 }

199             });

200         } catch (FileNotFoundException e) {

201             e.printStackTrace();

202         }

203     }

204     /***

205      * 多个文件上传

206      *

207      * @param sendFilesPath

208      */

209     public void uploadFile(ArrayList sendFilesPath) {

210         if (sendFilesPath.size() == 0)

211             return;

212

213         String strUploadFile = "";

214         AsyncHttpClient client = new AsyncHttpClient();

215         client.setURLEncodingEnabled(false);

216

217         RequestParams params = new RequestParams();

218         params.put("time", "20160511151954");

219         params.put("sign", "bb1d15ab7ce646ec87cc89d684ca4bcb");

220         // 批量上传

221         for (int i = 0; i < sendFilesPath.size(); i++) {

222             File myFile = new File(sendFilesPath.get(i));

223             try {

224                 params.put(myFile.getName(), myFile);

225             } catch (FileNotFoundException e1) {

226                 continue;

227             }

228         }

229

230         client.setTimeout(10000);

231         client.post(strUploadFile, params, new AsyncHttpResponseHandler() {

232

233             @Override

234             public void onFailure(int statusCode, Header[] headers,

235                     byte[] responseBody, Throwable arg3) {

236                 Log.i("Show", "上传失败");

237             }

238

239             @Override

240             public void onSuccess(int statusCode, Header[] headers,

241                     byte[] responseBody) {

242                 Log.i("Show", "上传成功");

243             }

244

245             @Override

246             public void onProgress(int bytesWritten, int totalSize) {

247                 super.onProgress(bytesWritten, totalSize);

248                 int count = (int) ((bytesWritten * 1.0 / totalSize) * 100);

249                 // 上传进度显示

250                 Log.i("Show", "上传进度显示:" + count);

251

252             }

253

254             @Override

255             public void onRetry(int retryNo) {

256                 super.onRetry(retryNo);

257                 // 返回重试次数

258             }

259         });

260     }

261

262 }

记得加网络权限

源码下载:

CSDN:http://download.csdn.net/detail/dickyqie/9702051

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值