引用开源框架通过AsyncHttpClient处理get/post请求

简介:

一、引用开源框架方法。

方法一

找到下载文件的源码,Com包黏贴到项目中的src目录下

 

方法二

引入jar包到libs

 

 

二、引用开源框架发送get请求给服务器步骤:

1.创建异步请求端对象

2.发送get请求,(get请求参数含义:请求的url地址;异步请求的handler

3.在成功请求里(status:状态返回码,headers:头部请求信息,responseBody返回结果)设置控件内容

 

三、引用开源框架发送post请求给服务器步骤

1.创建异步请求端对象

2.发送post请求,(get请求参数含义:请求的url地址;异步请求的handler

3.封装请求参数

4.在成功请求里(status:响应状态码,headers:响应头信息,responseBody相应内容的字节码)设置控件内容

补充:

查看帮助文档我们知道,在post方法中传递参数时候可以创建RequestParams的对象,put进你所想要赋的值。如下图:

 

实例解析:当用户登录时,在界面输出用户是否登录成功

运行结果 

       

项目实现

1.布局文件:同login布局文件
http://blog.csdn.net/zhaoyazhi2129/article/details/26509763
2.在AndroidManifest.xml添加internet权限

    <uses-permission android:name="android.permission.INTERNET"/>

3.LoginActivity的代码(代码中详细加了注释,请仔细阅读)

  1. package com.example.android_httpasync;  
  2.   
  3. import org.apache.http.Header;  
  4.   
  5. import com.loopj.android.http.AsyncHttpClient;  
  6. import com.loopj.android.http.AsyncHttpResponseHandler;  
  7. import com.loopj.android.http.RequestParams;  
  8.   
  9. import android.app.Activity;  
  10. import android.os.Bundle;  
  11. import android.text.TextUtils;  
  12. import android.view.View;  
  13. import android.widget.EditText;  
  14. import android.widget.TextView;  
  15. import android.widget.Toast;  
  16. /** 
  17.  * 通过开源框架AsyncHttpClient的get/post请求处理 
  18.  * @author zhaoyazhi 
  19.  * 
  20.  */  
  21. public class MainActivity extends Activity {  
  22.     private EditText et_username;  
  23.     private EditText et_password;  
  24.   
  25.     private TextView tv_result;  
  26.   
  27.     @Override  
  28.     protected void onCreate(Bundle savedInstanceState) {  
  29.         super.onCreate(savedInstanceState);  
  30.         setContentView(R.layout.activity_login);  
  31.         findView();  
  32.     }  
  33.   
  34.     /** 
  35.      * 查找控件 
  36.      */  
  37.     public void findView() {  
  38.         et_password = (EditText) findViewById(R.id.editpass);  
  39.         et_username = (EditText) findViewById(R.id.editusername);  
  40.         tv_result = (TextView) findViewById(R.id.tv_result);  
  41.     }  
  42.   
  43.     /** 
  44.      * 登陆按钮操作 
  45.      *  
  46.      * @param v 
  47.      */  
  48.     public void login(View v) {  
  49.         // 获取点击控件的id  
  50.         int id = v.getId();  
  51.         // 根据id进行判断  
  52.         switch (id) {  
  53.         case R.id.btn_login:// 进行登录操作  
  54.             // 获取用户名密码  
  55.             final String userName = et_username.getText().toString();  
  56.             final String userPass = et_password.getText().toString();  
  57.   
  58.             // 判断是否为空  
  59.             if (TextUtils.isEmpty(userName) || TextUtils.isEmpty(userPass)) {  
  60.                 Toast.makeText(getApplicationContext(), "用户名或者密码不能为空"0)  
  61.                         .show();  
  62.             } else {  
  63.                 Toast.makeText(getApplicationContext(), "发送请求道服务器"0).show();  
  64.   
  65.                 // loginByAsyncHttpClientGet(userName, userPass);  
  66.   
  67.                 loginAsyncHttpClientPost(userName, userPass);  
  68.   
  69.             }  
  70.             break;  
  71.   
  72.         default:  
  73.             break;  
  74.         }  
  75.     }  
  76.   
  77.     /** 
  78.      * 通过开源框架AsyncHttpClient的post请求处理 
  79.      * @param userName 
  80.      * @param userPass 
  81.      */  
  82.     private void loginAsyncHttpClientPost(final String userName,  
  83.             final String userPass) {  
  84.         // 发送请求到服务器  
  85.         AsyncHttpClient client = new AsyncHttpClient();  
  86.         String url = "http://172.16.237.144:8080/Login/LoginServlet";  
  87.         // 创建请求参数  
  88.         RequestParams params = new RequestParams();  
  89.         params.put("username", userName);  
  90.         params.put("userpass", userPass);  
  91.         // 执行post方法  
  92.         client.post(url, params, new AsyncHttpResponseHandler() {  
  93.   
  94.             @Override  
  95.             public void onSuccess(int statusCode, Header[] headers,  
  96.                     byte[] responseBody) {  
  97.                 // 设置值  
  98.                 tv_result.setText(new String(responseBody));  
  99.             }  
  100.   
  101.             @Override  
  102.             public void onFailure(int statusCode, Header[] headers,  
  103.                     byte[] responseBody, Throwable error) {  
  104.                 // 打印错误信息  
  105.                 error.printStackTrace();  
  106.   
  107.             }  
  108.         });  
  109.     }  
  110.   
  111.     /** 
  112.      * 通过开源框架AsyncHttpClient的get请求处理 
  113.      * @param userName 
  114.      * @param userPass 
  115.      */  
  116.     private void loginByAsyncHttpClientGet(final String userName,  
  117.             final String userPass) {  
  118.         // 创建异步请求端对象  
  119.         AsyncHttpClient client = new AsyncHttpClient();  
  120.   
  121.         String url = "http://172.16.237.144:8080/Login/LoginServlet?username="  
  122.                 + userName + "&userpass=" + userPass;  
  123.         // 发送get请求对象  
  124.         client.get(url, new AsyncHttpResponseHandler() {  
  125.             @Override  
  126.             // statusCode:状态返回码,headers:头部请求信息,responseBody返回结果  
  127.             public void onSuccess(int statusCode, Header[] headers,  
  128.                     byte[] responseBody) {  
  129.                 tv_result.setText(new String(responseBody));  
  130.             }  
  131.   
  132.             @Override  
  133.             public void onFailure(int statusCode, Header[] headers,  
  134.                     byte[] responseBody, Throwable error) {  
  135.                 // 输出错误信息  
  136.                 error.printStackTrace();  
  137.             }  
  138.         });  
  139.     }  
  140. }  


 

为了加强我们理解,在onSuccess方法中加入一些测试语句:

 

在控制台输出结果如下:

 

 

 jar文件资源:http://download.csdn.net/detail/zhaoyazhi2129/7400787

源码:http://download.csdn.net/detail/zhaoyazhi2129/7400799

相关文章
|
监控 安全 Java
Spring Boot2.6入门
Spring Boot2.6入门
289 0
|
数据采集 算法 小程序
MaaS一体化绿色出行服务,实现城市交通出行碳中和
和管理交通相关服务,以满足消费者的出行需求。旨在深刻理解公众的出行需求,将各种交通模式整合在统一的服务体系与平台上,利用大数据进行决策,以优化资源配置,满足出行者多样化出行需求,并通过统一的互联网应用对外提供服务。
3643 0
MaaS一体化绿色出行服务,实现城市交通出行碳中和
|
Java 数据库连接 数据库
强大:MyBatis ,三种流式查询方法
流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果。流式查询的好处是能够降低内存使用。
强大:MyBatis ,三种流式查询方法
|
8月前
|
关系型数据库 分布式数据库 数据库
再获殊荣,阿里云PolarDB数据库蝉联SIGMOD最佳论文奖
内存池化技术新突破,阿里云PolarDB蝉联SIGMOD最佳论文奖
|
数据采集 人工智能 算法
《探秘人工智能之关联规则挖掘:解锁数据背后的隐藏联系》
关联规则挖掘是人工智能中发现数据项间潜在关联的关键技术,通过支持度、置信度和提升度等指标评估关联。其步骤包括数据预处理、频繁项集挖掘、规则生成与筛选。常用算法有Apriori、FP-Growth和Eclat。该技术广泛应用于市场营销、医疗和网络安全等领域,助力决策优化与发展。
779 16
|
域名解析 缓存 安全
图解域名解析成IP的全过程(你浏览器摁下一个网址后发生了啥?)
图解域名解析成IP的全过程(你浏览器摁下一个网址后发生了啥?)
1371 0
|
存储 监控 前端开发
现货合约量化交易系统开发技术规则
现货合约量化交易系统的开发是综合性工程,涵盖目标确定、市场调研、功能规划等前期准备;选择编程语言和技术栈;设计系统架构;开发策略管理、资金管理、交易执行、数据分析及用户界面模块;进行单元、集成、压力测试及优化;最后选择服务器部署并持续监控。
|
网络协议 安全 Unix
6! 用Python脚本演示TCP 服务器与客户端通信过程!
6! 用Python脚本演示TCP 服务器与客户端通信过程!
468 1
|
安全 网络安全 数据安全/隐私保护
Mendelson AS2 介绍下载和配置
Mendelson AS2 介绍下载和配置
|
机器学习/深度学习 自动驾驶 计算机视觉
YOLOv8改进 | Neck篇 | Slim-Neck替换特征融合层实现超级涨点 (又轻量又超级涨点)
YOLOv8改进 | Neck篇 | Slim-Neck替换特征融合层实现超级涨点 (又轻量又超级涨点)
1610 2

热门文章

最新文章