依据08_android入门_android-async-http开源项目介绍及用法的介绍,我们通过最常见的登陆案例进行介绍android-async-http开源项目中有关类的使用.希望对你学习android-async-http开源项目有所帮助.

1.继续採用03_android入门_採用RelativeLayout实现登陆界面为该案例的布局文件

2.server端的代码採用04_android入门_採用HttpURLConnection的GET方式实现登陆案例中的server代码片段(5.关于server中我仅写一个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);
} /**
* 点击button控件触发的事件
* @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();// username
String userPass = et_pass.getText().toString();// 用户password
//推断username和password是否为空
if (TextUtils.isEmpty(userName.trim())
|| TextUtils.isEmpty(userPass.trim())) {
Toast.makeText(this, "username或者password不能为空", Toast.LENGTH_LONG).show();
} else {
// 发送请求给server
//调用: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:对应的头信息 比方 响应的时间,响应的server ;
* 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.程序执行结果例如以下图:

09_android入门_採用android-async-http开源项目的GET方式或POST方式实现登陆案例的更多相关文章

  1. 07_android入门_採用HttpClient的POST方式、GET方式分别实现登陆案例

    1.简单介绍 HttpClient 是 Apache Jakarta Common 下的子项目,能够用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,而且它支持 HTTP 协议 ...

  2. 09_android入门_采用android-async-http开源项目的GET方式或POST方式实现登陆案例

    根据08_android入门_android-async-http开源项目介绍及使用方法的介绍,我们通过最常见的登陆案例进行介绍android-async-http开源项目中有关类的使用.希望对你学习 ...

  3. 跟我一起使用android Studio打包react-native项目的APK

    使用的是react-native的hello-world项目 第一步:创建项目 npm install -g yarn react-native-cli react-native init Aweso ...

  4. 安卓开发_浅谈Android动画(四)

    Property动画 概念:属性动画,即通过改变对象属性的动画. 特点:属性动画真正改变了一个UI控件,包括其事件触发焦点的位置 一.重要的动画类及属性值: 1.  ValueAnimator 基本属 ...

  5. Spring_MVC_教程_快速入门_深入分析

    Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门  资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf Spring ...

  6. 【笔记目录2】【jessetalk 】ASP.NET Core快速入门_学习笔记汇总

    当前标签: ASP.NET Core快速入门 共2页: 上一页 1 2  任务27:Middleware管道介绍 GASA 2019-02-12 20:07 阅读:15 评论:0 任务26:dotne ...

  7. android 登陆案例_最终版本 sharedpreference

    xml  与之前的登陆案例相同 java代码: package com.itheima.login; import java.util.Map; import com.itheima.login.ut ...

  8. JavaWeb入门_模仿天猫整站Tmall_SSM实践项目

    Tmall_SSM 技术栈 Spring MVC+ Mybatis + Spring + Jsp + Tomcat , 是 Java Web 入门非常好的练手项目 效果展示: 模仿天猫前台 模仿天猫后 ...

  9. JavaWeb入门_模仿天猫整站Tmall_SSH实践项目

    Tmall_SSH 技术栈 Struts2 + Hibernate + Spring + Jsp + Tomcat , 是 Java Web 入门非常好的练手项目 效果展示: 模仿天猫前台 模仿天猫后 ...

随机推荐

  1. JAVA Useful Program(1)

    public static void main(String[] args){       //字符串有整型的相互转换          String str=String.valueOf(123); ...

  2. Hacker News网站的文章排名算法工作原理

    In this post I'll try to explain how Hacker News ranking algorithm works and how you can reuse it in ...

  3. 5.中文问题(自身,操作系统级别,应用软件的本身),mysql数据库备份

     第一层因素: mysql的自身的设置 mysql有六处使用了字符集.分别为:client .connection.database.results.server .system. mysql&g ...

  4. MongoDB学习笔记(六) MongoDB索引用法和效率分析

    MongoDB中的索引其实类似于关系型数据库,都是为了提高查询和排序的效率的,并且实现原理也基本一致.由于集合中的键(字段)可以是普通数据类型,也可以是子文档.MongoDB可以在各种类型的键上创建索 ...

  5. 打破“中规中矩”,手机QQ何以萌翻众人?

        随着移动互联网的迅猛发展,越来越多的手机应用展现在了用户面前,不过,面对林林总总的手机应用,有时候我们却提不起兴趣,因为功能的同质化,UI的千篇一律已经让我们多少有些审美疲劳的感觉.     ...

  6. Xamainr 地图之webview初探

    一 说几点 当下移动开发主要实现方式有传统的Native以及新的混合开发想Rect.js,nodejs这些前段框架,其本质要么是原生控件来实现UI,要么html来实现UI.Xamarin其实也只是取巧 ...

  7. 积累的VC编程小技巧之列表框

    1.列表框中标题栏(Column)的添加 创建一个List Control,其ID为IDC_LIST,在其Styles属性项下的View项里选择Report.Align项里选择Top.Sort项里选择 ...

  8. Visual Studio 控件命名规范(很详细)

    VS 控件命名规范 Type Prefix Example Array arr arrShoppingList Boolean bln blnIsPostBack Byte byt bytPixelV ...

  9. AS3开发必须掌握的内容

    1.事件机制 2.显示列表 3.垃圾回收 4.常用方法 5.网络通信 6.位图动画 7.渲染机制 8.API结构 9.沙箱机制 10.资源管理 11.内存管理 12.性能优化 13.资源选择 14.安 ...

  10. JSP内置对象Session

    创建和获取客户的会话 setAttribute()与getAttribute() session.setAttribute(String name , Object obj) 如session.set ...