09_android入门_采用android-async-http开源项目的GET方式或POST方式实现登陆案例
根据08_android入门_android-async-http开源项目介绍及使用方法的介绍,我们通过最常见的登陆案例进行介绍android-async-http开源项目中有关类的使用.希望对你学习android-async-http开源项目有所帮助.
1.继续采用03_android入门_采用RelativeLayout实现登陆界面为该案例的布局文件
2.服务器端的代码采用04_android入门_采用HttpURLConnection的GET方式实现登陆案例中的服务器代码片段(5.关于服务器中我仅写一个Servlet进行处理相应的请求处理)
3.在应用中引用android-async-http开源项目
方法一:找到下载文件的源码library\src\main\java的com包黏贴到项目中的src目录下
方法二:把android-async-http-master\releases下面最新的jar包放到应用到libs下
4.LoginActivity的代码(代码中详细加了注释,请仔细阅读)
- package com.example.lesson03;
- import org.apache.http.Header;
- import com.loopj.android.http.AsyncHttpClient;
- import com.loopj.android.http.AsyncHttpResponseHandler;
- import com.loopj.android.http.RequestParams;
- import android.app.Activity;
- import android.os.Bundle;
- import android.text.TextUtils;
- import android.view.View;
- import android.widget.EditText;
- import android.widget.TextView;
- import android.widget.Toast;
- public class LoginActivity extends Activity {
- // 声明控件
- private EditText et_name, et_pass;
- private TextView tv_result;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- // 获取控件对象
- et_name = (EditText) findViewById(R.id.et_name);
- et_pass = (EditText) findViewById(R.id.et_pass);
- tv_result = (TextView) findViewById(R.id.tv_result);
- }
- /**
- * 点击按钮控件触发的事件
- * @param v
- */
- public void login(View v) {
- //获取控件的id
- int id = v.getId();
- //根据id判断进行相应的处理
- switch (id) {
- case R.id.btn_login:
- // 获取控件的文本内容
- String userName = et_name.getText().toString();// 用户名
- String userPass = et_pass.getText().toString();// 用户密码
- //判断用户名和密码是否为空
- if (TextUtils.isEmpty(userName.trim())
- || TextUtils.isEmpty(userPass.trim())) {
- Toast.makeText(this, "用户名或者密码不能为空", Toast.LENGTH_LONG).show();
- } else {
- // 发送请求给服务器
- //调用:loginByAsyncHttpClientPost(userName, userPass);
- loginByAsyncHttpClientGet(userName, userPass);
- }
- break;
- }
- }
- /**
- * 采用AsyncHttpClient的Post方式进行实现
- * @param userName
- * @param userPass
- */
- public void loginByAsyncHttpClientPost(String userName, String userPass) {
- AsyncHttpClient client = new AsyncHttpClient(); // 创建异步请求的客户端对象
- String url = "http://172.16.237.200:8080/video/login.do"; // 定义请求的地址
- // 创建请求参数的封装的对象
- RequestParams params = new RequestParams();
- params.put("username", userName); // 设置请求的参数名和参数值
- params.put("userpass", userPass);// 设置请求的参数名和参数
- // 执行post方法
- client.post(url, params, new AsyncHttpResponseHandler() {
- /**
- * 成功处理的方法
- * statusCode:响应的状态码; headers:相应的头信息 比如 响应的时间,响应的服务器 ;
- * responseBody:响应内容的字节
- */
- @Override
- public void onSuccess(int statusCode, Header[] headers,
- byte[] responseBody) {
- if (statusCode == 200) {
- tv_result.setText(new String(responseBody)); // 设置显示的文本
- }
- }
- /**
- * 失败处理的方法
- * error:响应失败的错误信息封装到这个异常对象中
- */
- @Override
- public void onFailure(int statusCode, Header[] headers,
- byte[] responseBody, Throwable error) {
- error.printStackTrace();// 把错误信息打印出轨迹来
- }
- });
- }
- /**
- * 采用AsyncHttpClient的Get方式进行实现
- * @param userName
- * @param userPass
- */
- public void loginByAsyncHttpClientGet(String userName, String userPass) {
- // 创建异步的客户端对象
- AsyncHttpClient client = new AsyncHttpClient();
- // 请求的地址
- String url = "http://172.16.237.200:8080/video/login.do";
- // 创建请求参数的封装的对象
- RequestParams params = new RequestParams();
- params.put("username", userName); // 设置请求的参数名和参数值
- params.put("userpass", userPass);// 设置请求的参数名和参数
- // 发送get请求的时候 url地址 相应参数,匿名回调对象
- client.get(url, params,new AsyncHttpResponseHandler() {
- @Override
- public void onSuccess(int statusCode, Header[] headers,
- byte[] responseBody) {
- // 成功处理的方法
- System.out
- .println("statusCode-------------------" + statusCode);
- // 遍历头信息
- for (int i = 0; i < headers.length; i++) {
- Header header = headers[i];
- System.out.println("header------------Name:"
- + header.getName() + ",--Value:"
- + header.getValue());
- }
- // 设置控件内容
- tv_result.setText(new String(responseBody));
- }
- @Override
- public void onFailure(int statusCode, Header[] headers,
- byte[] responseBody, Throwable error) {
- // 失败处理的方法
- error.printStackTrace();
- }
- });
- }
- }
5.程序运行结果如下图:
http://blog.csdn.net/redarmy_chen/article/details/26980613
09_android入门_采用android-async-http开源项目的GET方式或POST方式实现登陆案例的更多相关文章
- 09_android入门_採用android-async-http开源项目的GET方式或POST方式实现登陆案例
依据08_android入门_android-async-http开源项目介绍及用法的介绍,我们通过最常见的登陆案例进行介绍android-async-http开源项目中有关类的使用.希望对你学习an ...
- 搜刮一些开源项目的APP
iOS完整App资源收集 <iOS完整app资源收集> <GitHub 上有哪些完整的 iOS-App 源码值得参考?> <GitHub 上有哪些完整的 iOS-App ...
- 优秀开源项目的svn地址
很多优秀的开源项目已经提供SVN源码签出了,无论是解疑还是学习,都是一大幸福之事啊! Apache的SVN库,强烈推荐! http://svn.apache.org/repos/asf/ 里面不但有S ...
- 新一代分布式任务调度框架:当当elastic-job开源项目的10项特性
作者简介: 张亮,当当网架构师.当当技术委员会成员.消息中间件组负责人.对架构设计.分布式.优雅代码等领域兴趣浓厚.目前主导当当应用框架ddframe研发,并负责推广及撰写技术白皮书. 一.为什么 ...
- 跟我一起使用android Studio打包react-native项目的APK
使用的是react-native的hello-world项目 第一步:创建项目 npm install -g yarn react-native-cli react-native init Aweso ...
- jeecg开源项目的IDEA的部署
JEECG采用了SpringMVC + Hibernate + Minidao(类Mybatis) + Easyui(UI库)+ Jquery + Boostrap + Ehcache + Redis ...
- 在 GitHub 上玩转开源项目的 Code Review
一.幕后故事 时光荏苒,岁月如梭-- (太文绉绉了,这不是我的风格) 今天我准备聊聊在 GitHub 上如何玩 Code Review. 突发奇想?心血来潮?不是. 咋回事呢?(对八卦不感兴趣的可以直 ...
- MVC学习笔记---WebViewPage(nop等开源项目的@T)
http://www.cnblogs.com/gyche/p/5597491.html http://www.cnblogs.com/Alex80/p/5369042.html http://www. ...
- 如何选择开源项目的license
https://choosealicense.com/ http://www.csdn.net/article/2013-07-16/2816249-Github-Open-Source-Licens ...
随机推荐
- 微信OAuth2网页授权
using System; using System.Collections.Generic; using System.Linq; using System.Text; using YTO.WeiX ...
- HDU 1109
http://acm.hdu.edu.cn/showproblem.php?pid=1109 一个范围内给一堆点,求到这些点的最短距离最大 模拟退火,温度是步长 #include <iostre ...
- Inno Setup的使用笔记
Inno Setup的使用笔记 分类: Install Setup 2013-02-02 15:33 1002人阅读 评论(0) 收藏 举报 项目需要,前些天学习了Inno Setup这跨打包工具的使 ...
- Ecshop安装过程中的的问题:cls_image::gd_version()和不支持JPEG
在安装Ecshop的时候,遇到两个问题: 1.Strict Standards: Non-static method cls_image::gd_version() should not be cal ...
- Ubuntu14.04 64位运行32位程序
最近公司新增的机器安装Ubuntu14.04 64bit导致之前在32bit下编译的Qt工具软件无法运行. 于是google的了一下找到一些解决办法,但不能保证全部32bit的Qt程序都能正常,测试了 ...
- 如果两个对象具有相同的哈希码,但是不相等的,它们可以在HashMap中同时存在吗?
如果两个对象具有相同的哈希码,但是不相等的,它们可以在HashMap中同时存在吗? ----答案是 可以 原因: 在hashmap中,由于key是不可以重复的,他在判断key是不是重复的时候就判断了h ...
- dedecms list 实现noflag
转自:http://blog.sina.com.cn/s/blog_7e53dd2b0101l3kq.html 替换include下arc.listview.class.php即可 经测试可行 但在更 ...
- 在虚拟上安装kali
1.创建新的虚拟机 2.选择典型 下一步 3.选安装程序光盘映像文件:写入自己.iso的位置 4.linux--Ubuntu 5.给虚拟机名称 虚拟机在你电脑的位置 6.最大自盘自己定义 7.选自定义 ...
- CentOS7.0关于libguestfs的bug
libguestfs,libguestfs-tools是用来在不启动虚拟机的情况下,快速简单访问虚拟机磁盘的工具. 今天在CentOS7.0系统上通过guestmount命令去mount虚拟机磁盘的时 ...
- 蓝牙SIG
蓝牙SIG 蓝牙SIG是一个国际性的非营利组织,它的目的是制定蓝牙的技术规范和推广蓝牙技术的应用.该组织由发起会员(Promoter).合作会员(Associate Member)和接受会员(Adop ...