android开源框架android-async-http使用

C++ is_sorted()排序函数用法详解(深入了解,一文学会) find_end() 函数定义在<algorithm>头文件中,常用于在序列 A 中查找序列 B 最后一次出现的位置。例如,有如下 2 个序列: 序列 A:1,2,3,4,5,1,2,3,4,5 序列 B:1,2,3 通过观察不难发现,序列 B 在序列 A 中出现了 2 次,而借助 find_end() 函数,可以轻松的得到序列 A 中最后一个(也就是第 2 个) {1,2,3}。 ...... 阅读详情


android-async-http开源框架可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来也很简单,下面做简单介绍,具体详细使用看官网:https://github.com/loopj/android-async-http

1.新建项目,去官网下载zip包,解压,打开releases文件,把里面最新的jar包,考入项目工程libs目录下,引入包。

2.通过1,就可以使用了,很简单,下面是自己写的demo,用它提供的各种不同方法完成从服务器获取一个json数据:


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.http;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.BinaryHttpResponseHandler;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;
 
public class HttpUtil {
     private static     AsyncHttpClient client = new AsyncHttpClient();     //实例话对象
     static
     {
         client.setTimeout( 11000 );    //设置链接超时,如果不设置,默认为10s
     }
     public static void get(String urlString,AsyncHttpResponseHandler res)     //用一个完整url获取一个string对象
     {
         client.get(urlString, res);
     }
     public static void get(String urlString,RequestParams params,AsyncHttpResponseHandler res)    //url里面带参数
     {
         client.get(urlString, params,res);
     }
     public static void get(String urlString,JsonHttpResponseHandler res)    //不带参数,获取json对象或者数组
     {
         client.get(urlString, res);
     }
     public static void get(String urlString,RequestParams params,JsonHttpResponseHandler res)    //带参数,获取json对象或者数组
     {
         client.get(urlString, params,res);
     }
     public static void get(String uString, BinaryHttpResponseHandler bHandler)    //下载数据使用,会返回byte数据
     {
         client.get(uString, bHandler);
     }
     public static AsyncHttpClient getClient()
     {
         return client;
     }
}


这个类主要列出了我们常用的get方法,在要使用的地方,调用该类就行了。

具体使用的类:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package com.http;
 
import java.io.File;
import java.io.FileOutputStream;
 
import org.json.JSONArray;
import org.json.JSONObject;
 
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
 
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.BinaryHttpResponseHandler;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;
 
public class MainActivity  extends Activity {
     private TextView textView;  // 顶部textview
     private ProgressDialog pDialog;
     private TextView textView2;  // 下面textview,显示获取的所有数据
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         textView = (TextView) findViewById(R.id.text);
         textView2 = (TextView) findViewById(R.id.text2);
     }
     public void method1(View view) {
         pDialog = ProgressDialog.show( this ,  "请稍等" ,  "数据加载中" );
         String urlString =  "http://client.azrj.cn/json/cook/cook_list.jsp?type=1&p=2&size=10" ; // 一個獲取菜谱的url地址
         HttpUtil.get(urlString,  new AsyncHttpResponseHandler() {
             public void onSuccess(String arg0) {  // 获取数据成功会调用这里
                 pDialog.dismiss();
                 textView.setText( "获取json数据成功,看下面" );
                 textView2.setText(arg0);
                 Log.i( "hck" , arg0);
             };
             public void onFailure(Throwable arg0) {  // 失败,调用
                 Toast.makeText(MainActivity. this ,  "onFailure" ,
                         Toast.LENGTH_LONG).show();
             };
             public void onFinish() {  // 完成后调用,失败,成功,都要掉
             };
         });
     }
     public void method2(View view) {
         String urlString =  "http://client.azrj.cn/json/cook/cook_list.jsp?" ;
         RequestParams params =  new RequestParams();  // 绑定参数
         params.put( "type" ,  "1" );
         params.put( "p" ,  "2" );
         params.put( "size" ,  "10" );
         HttpUtil.get(urlString, params,  new JsonHttpResponseHandler() {
             public void onSuccess(JSONArray arg0) {  // 成功后返回一个JSONArray数据
                 Log.i( "hck" , arg0.length() +  "" );
                 try {
                     textView.setText( "菜谱名字:"
                             + arg0.getJSONObject( 2 ).getString( "name" ));  //返回的是JSONArray, 获取JSONArray数据里面的第2个JSONObject对象,然后获取名字为name的数据值
                 }  catch (Exception e) {
                     Log.e( "hck" , e.toString());
                 }
             };
             public void onFailure(Throwable arg0) {
                 Log.e( "hck" ,  " onFailure" + arg0.toString());
             };
             public void onFinish() {
                 Log.i( "hck" ,  "onFinish" );
             };
             public void onSuccess(JSONObject arg0) {    //返回的是JSONObject,会调用这里
                 Log.i( "hck" ,  "onSuccess " );
                 try {
                     textView.setText( "菜谱名字:"
                             + arg0.getJSONArray( "list" ).getJSONObject( 0 )
                                     .getString( "name" ));
                 }  catch (Exception e) {
                     Log.e( "hck" , e.toString());
                 }
             };
         });
     }
     public void method3(View view) {
         String urlString =  "http://client.azrj.cn/json/cook/cook_list.jsp?type=1&p=2&size=10" ;
         HttpUtil.get(urlString,  new JsonHttpResponseHandler() {
             public void onSuccess(JSONObject arg0) {
                 try {
                     textView.setText( "菜谱名字:"
                             + arg0.getJSONArray( "list" ).getJSONObject( 1 )
                                     .getString( "name" ));
                 }  catch (Exception e) {
                     Log.e( "hck" , e.toString());
                 }
             };
         });
     }
     public void method4(View view) {
         String urlString =  "http://client.azrj.cn/json/cook/cook_list.jsp?" ;
         final RequestParams params =  new RequestParams();
         params.put( "type" ,  "1" );
         params.put( "p" ,  "2" );
         params.put( "size" ,  "10" );
         HttpUtil.get(urlString, params,  new AsyncHttpResponseHandler() {
             public void onSuccess(String arg0) {
                 try {
                     JSONObject jObject =  new JSONObject(arg0);
                     textView.setText( "菜谱名字:"
                             + jObject.getJSONArray( "list" ).getJSONObject( 2 )
                                     .getString( "name" ));
                     Log.i( "hck" , params.getEntity().toString());
                 }  catch (Exception e) {
                 }
             };
         });
     }
     public void method5(View view) {
         String url =  "http://f.hiphotos.baidu.com/album/w%3D2048/sign=38c43ff7902397ddd6799f046dbab3b7/9c16fdfaaf51f3dee973bf7495eef01f3b2979d8.jpg" ;
         HttpUtil.get(url,  new BinaryHttpResponseHandler() {
             @Override
             public void onSuccess( byte [] arg0) {
                 super .onSuccess(arg0);
                 File file = Environment.getExternalStorageDirectory();
                 File file2 =  new File(file,  "cat" );
                 file2.mkdir();
                 file2 =  new File(file2,  "cat.jpg" );
                 try {
                     FileOutputStream oStream =  new FileOutputStream(file2);
                     oStream.write(arg0);
                     oStream.flush();
                     oStream.close();
                     textView.setText( "可爱的猫咪已经保存在sdcard里面" );
                 }  catch (Exception e) {
                     e.printStackTrace();
                     Log.i( "hck" , e.toString());
                 }
             }
         });
     }
}

布局文件:


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
< ScrollView
     xmlns:android = "http://schemas.android.com/apk/res/android"
     xmlns:tools = "http://schemas.android.com/tools"
     android:layout_width = "match_parent"
     android:layout_height = "match_parent"
     android:orientation = "vertical"
       android:gravity = "center_horizontal"
     >
     < LinearLayout
     android:layout_width = "fill_parent"
     android:layout_height = "fill_parent"
     android:orientation = "vertical"
       android:gravity = "center_horizontal" >
     < TextView
         android:textColor = "#FF0000"
         android:textSize = "16sp"
        android:layout_marginTop = "20dp"
      android:gravity = "center_horizontal"
         android:id = "@+id/text"
         android:layout_width = "wrap_content"
         android:layout_height = "wrap_content"
         android:text = "获取数据完成后会显示在这里" />
< Button
     android:layout_marginTop = "50dp"
     android:id = "@+id/bt1"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:text = "第一种"
     android:onClick = "method1"
     />
< Button
     android:id = "@+id/bt2"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:text = "第2种"
     android:onClick = "method2"
     />
< Button
     android:id = "@+id/bt3"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:text = "第3种"
       android:onClick = "method3"
     />
< Button
     android:id = "@+id/bt4"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:text = "第4种"
       android:onClick = "method4"
     />
< Button
     android:id = "@+id/bt5"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:text = "第5种"
       android:onClick = "method5"
     />
   < TextView
         android:textColor = "#FF0000"
         android:textSize = "16sp"
        android:layout_marginTop = "20dp"
      android:gravity = "center_horizontal"
         android:id = "@+id/text2"
         android:layout_width = "wrap_content"
         android:layout_height = "wrap_content"
          />
</ LinearLayout >
</ ScrollView >

 

很简单很实用,上面只是get方法的,上传数据,和这个也差不多,大家自己建个服务器,试试。记得加入网文网络的权限和向sdcard的访问权限

【C++11算法】is_sorted、is_sorted_until 在C++11标准中,引入了一系列强大的算法函数,用于处理容器和序列。这些算法函数提供了丰富的功能,可以帮助开发人员高效地操作数据。本文将重点介绍is_sorted和is_sorted_until这两个算法函数。is_sorted用于判断序列是否已经按指定排序准则排序好了,而is_sorted_until则用于查找序列中首个无序元素的位置。在本文中,我们介绍了C++11标准库中的is_sorted和is_sorted_until算法函数。 阅读详情

相关推荐

高斯投影坐标正反算算法(python)

高斯坐标正反算算法,在正算的时候,y的第一个数字表示是用几度带换算的,第二个数字和第三个数字表示带号。该程序是根据武汉大学出版社出版的第三版的《大地测量学基础》编写, 用于课程实验学习。

weixin_64338372的博客 4588

android请求网络——第三方库android-async-http的使用(3)

本文系作者原创,转载请附原文地址,谢谢!

leobert.lan的博客 3822

ArcGIS+PLUS+InVEST三件套:从零搞定生态系统服务模拟预测(附完整数据包)

本文详细介绍了如何整合ArcGIS、PLUS模型和InVEST模型,构建一套完整的生态系统服务模拟预测工作流。内容涵盖从统一数据预处理、PLUS模型多情景模拟,到InVEST模型量化评估的全过程,并提供了关键脚本和避坑指南,旨在帮助研究者和从业者高效解决土地利用变化与生态系统服务评估结合的实际难题。

weixin_42522857的博客 139

安卓网络编程——Android-async-http(网络通信框架)

之前学习了一款安卓的网络通信框架Volley https://blog.youkuaiyun.com/nishigesb123/article/details/89356776 Volley是谷歌官方推出的,而本文介绍的Android-async-http也是一个网络通信框架(准确点,网络请求框架)不过是第三方的。 之前学习了Apache HTTP Client,说Apache HTTP Client已...

旧日灯塔 1775

Frida实战:高效dump Android内存中的so文件与修复技巧

本文详细介绍了使用Frida工具dump Android内存中已解密so文件的实战技巧。针对加固应用静态分析失效的痛点,文章提供了从环境搭建、使用frida_dump脚本自动化抓取内存数据,到利用SoFixer工具修复ELF文件结构的完整流程,帮助逆向分析人员高效获取可分析的so文件。

tt34567的博客 529

COMSOL仿真避坑指南:列管反应器模拟中多孔介质与化学反应设置的5个常见错误

本文详细解析了COMSOL仿真中列管反应器模拟的5个常见错误,包括多孔介质模型选择、化学反应接口配置、对流扩散方程处理、薄层热阻设置及网格独立性验证。特别针对多孔介质与化学反应设置的误区,提供了实用的判断标准和修正方法,帮助工程师避免计算偏差,提升仿真精度。

weixin_29597551的博客 325

关于安卓如何使用android-async-http开源框架

关于安卓如何使用android-async-http开源框架

SSBBY的博客 1475

手把手教你实现阿克曼ROS小车的运动控制

本文详细介绍了如何从零开始实现阿克曼ROS小车的运动控制。内容涵盖硬件搭建、STM32底层PID速度与舵机控制、ROS层阿克曼运动学模型解析,以及上下位机通信协议设计。通过手把手的代码示例和调试步骤,帮助机器人爱好者与开发者掌握将高级速度指令转化为小车具体动作的全流程,实现流畅的阿克曼转向控制。

weixin_29193259的博客 200

安卓开源框架android-async-http-master最新版的应该怎么用啊,求大神指导

目前最新的是android-async-http-1.4.8.jar 导入库后,使用原来的较老版本的库的方法调用,出现问题! public void doGet(View v) { final String username = usernameView.getText().toString(); final String password = passwordView.getText

jiacong9383的博客 534

流媒体协议-RTMP简介

与rtsp 不同,RTSP(Real-Time Streaming Protocol)是一个控制协议,负责控制媒体流的传输,但不传输媒体数据本身。RTSP 可以通过 TCP 或 UDP 传输 RTP 包来传输音视频数据。 RTMP(Real-Time Messaging Protocol)是一个综合性的协议,不仅可以传输音视频数据,还可以传输信令控制指令。RTMP 使用 TCP 作为传输协议,可以直接在 TCP 连接上传输音视频数据,也可以传输控制指令,实现了音视频流的实时传输和控制

xiaoshuaijinniu的博客 4554

优化翼型形状的遗传算法实现

在每一代种群中,通过计算每个个体的适应度值,选择具有较高适应度值的个体,并使用交叉和变异算子对它们进行操作,从而生成新的个体。具体而言,我们将采用一个参数化的翼型模型,其中包括几何设计变量,如角度、弯曲和厚度等,以及性能指标,如升阻比和扭矩等。总之,本文提供了一个基于遗传算法的优化方法,用于寻找最优的翼型形状,并提供MATLAB源代码。需要注意的是,上述代码中的objFunc函数是一个示例性质的目标函数,实际应用中需要根据具体的问题进行修改。1.初始化一个随机的种群,其中每个个体代表一个参数化的翼型模型。

与其临渊羡鱼,不如退而结网 518

开源框架android-async-http使用

 官网:https://github.com/loopj/android-async-http android-async-http开源框架可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来也简单,详细请看官网: 到官网下载zip包,解压,里面有完整的代码和各种版本的jar包和demo,源码在library里面,jar包在releases里面。项目更新速度很快,老版本的回

u010141589的专栏 554

MATLAB GUI 水果成熟度分级系统设计与实现

本文基于 MATLAB GUI 设计并实现了一款水果成熟度分级系统,能够准确地评估水果的成熟程度。在实现过程中,我们运用了 MATLAB 中的函数实现对图像的处理和分析,同时使用 GUI 界面增加了系统的易用性。值得一提的是,在实际操作中,我们应该结合实际需求对系统进行相应的改进与完善,以满足不同领域和应用场景下的需求。实验结果表明,本系统可以有效地检测出水果的成熟度,并对其进行精准的评分。因此,本文设计并实现了一款基于 MATLAB GUI 的水果成熟度分级系统。三、MATLAB 代码实现。

uote_e的博客 708

Android开源框架AsyncHttpClient android async http 使用

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;

jfdfhh的博客 310

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Android开源框架AsyncHttpClient (android-async-http)使用

android-async-http 开源框架可以使我们轻松地获取网络数据或者向服务器发送数据,最关键的是,它是异步框架,在底层使用线程池处理并发请求,效率很高,使用又特别简单。

安晓辉生涯——聚焦程序员的职业规划与成长 6万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android开源框架AsyncHttpClient android-async-http 使用

Android开源框架AsyncHttpClient android-async-http 使用

hfhhgfv的博客 303

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android开源框架android-async-http的学习

Android-async-http的地址http://loopj.com/android-async-http/官方的解释是这样的:An asynchronous callback-based Http client for Android built on top of Apache’s HttpClient libraries. All requests are made outside of

freshxu的博客 594

android async框架,学习笔记:异步http开源框架android-async-http的使用

接着昨天的笔记,昨天的笔记我们讲到了两种面向HTTP协议发送GET/POST请求的方式,并对比了两种方式的源码还有GET/POST参数的不同,我们说到,这两种方式都是需要三步来完成:1,开启一个子线程;2,编写http请求逻辑传递/获取数据;3,让UI线程更新界面.托管在GITHUB上的开源框架就直接实现了这三个步骤的包装,我们需要做的只是传递几个参数和获取数据后进行处理即可:我们先通过GET请求...

weixin_29501693的博客 435

android开源框架android-async-http详细的使用介绍

1.在介绍android-async-http之前先和volley框架比较一下 volley更适用于数据交换比较频繁,数据的大小比较小数据量比较多的时候使用 android-async-http更适用于上传或者下载比较大的文件 2.android-async-http的特征 处理异步的http请求,并通过匿名内部类处理回调结果,Http异步请求均位于非UI线程, 不会阻塞UI操作

张小鹏的博客 492

Android 开源框架之 Android-async-http 源码解读

开源项目链接android-async-http仓库:https://github.com/loopj/android-async-httpandroid-async-http主页:http://loopj.com/android-async-http/(估计需要翻墙)开源项目简介该框架是基于Apache HttpClient API 用于Android开发的一个异步并发的网络请求库,所以的网络请求

废墟的树的专栏 4164
上一篇: No resource found that matches the given name 'Theme.AppCompat.Light 的完美解决方案
下一篇: 解决Eclipse中文乱码
codepython
博客等级 码龄20年 125粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值