android-async-http开源项目GET方式 POST方式实现登陆

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

1.在应用中引用android-async-http开源项目

方法一:找到下载文件的源码library\src\main\java的com包黏贴到项目中的src目录下

方法二:把android-async-http-master\releases下面最新的jar包放到应用到libs下

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

[java] view
plain
copy

  1. package com.example.lesson03;
  2. import org.apache.http.Header;
  3. import com.loopj.android.http.AsyncHttpClient;
  4. import com.loopj.android.http.AsyncHttpResponseHandler;
  5. import com.loopj.android.http.RequestParams;
  6. import android.app.Activity;
  7. import android.os.Bundle;
  8. import android.text.TextUtils;
  9. import android.view.View;
  10. import android.widget.EditText;
  11. import android.widget.TextView;
  12. import android.widget.Toast;
  13. public class LoginActivity extends Activity {
  14. // 声明控件
  15. private EditText et_name, et_pass;
  16. private TextView tv_result;
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.activity_main);
  21. // 获取控件对象
  22. et_name = (EditText) findViewById(R.id.et_name);
  23. et_pass = (EditText) findViewById(R.id.et_pass);
  24. tv_result = (TextView) findViewById(R.id.tv_result);
  25. }
  26. /**
  27. * 点击按钮控件触发的事件
  28. * @param v
  29. */
  30. public void login(View v) {
  31. //获取控件的id
  32. int id = v.getId();
  33. //根据id判断进行相应的处理
  34. switch (id) {
  35. case R.id.btn_login:
  36. // 获取控件的文本内容
  37. String userName = et_name.getText().toString();// 用户名
  38. String userPass = et_pass.getText().toString();// 用户密码
  39. //判断用户名和密码是否为空
  40. if (TextUtils.isEmpty(userName.trim())
  41. || TextUtils.isEmpty(userPass.trim())) {
  42. Toast.makeText(this, "用户名或者密码不能为空", Toast.LENGTH_LONG).show();
  43. } else {
  44. // 发送请求给服务器
  45. //调用:loginByAsyncHttpClientPost(userName, userPass);
  46. loginByAsyncHttpClientGet(userName, userPass);
  47. }
  48. break;
  49. }
  50. }
  51. /**
  52. * 采用AsyncHttpClient的Post方式进行实现
  53. * @param userName
  54. * @param userPass
  55. */
  56. public void loginByAsyncHttpClientPost(String userName, String userPass) {
  57. AsyncHttpClient client = new AsyncHttpClient(); // 创建异步请求的客户端对象
  58. String url = "http://172.16.237.200:8080/video/login.do"; // 定义请求的地址
  59. // 创建请求参数的封装的对象
  60. RequestParams params = new RequestParams();
  61. params.put("username", userName); // 设置请求的参数名和参数值
  62. params.put("userpass", userPass);// 设置请求的参数名和参数
  63. // 执行post方法
  64. client.post(url, params, new AsyncHttpResponseHandler() {
  65. /**
  66. * 成功处理的方法
  67. * statusCode:响应的状态码; headers:相应的头信息 比如 响应的时间,响应的服务器 ;
  68. * responseBody:响应内容的字节
  69. */
  70. @Override
  71. public void onSuccess(int statusCode, Header[] headers,
  72. byte[] responseBody) {
  73. if (statusCode == 200) {
  74. tv_result.setText(new String(responseBody)); // 设置显示的文本
  75. }
  76. }
  77. /**
  78. * 失败处理的方法
  79. * error:响应失败的错误信息封装到这个异常对象中
  80. */
  81. @Override
  82. public void onFailure(int statusCode, Header[] headers,
  83. byte[] responseBody, Throwable error) {
  84. error.printStackTrace();// 把错误信息打印出轨迹来
  85. }
  86. });
  87. }
  88. /**
  89. * 采用AsyncHttpClient的Get方式进行实现
  90. * @param userName
  91. * @param userPass
  92. */
  93. public void loginByAsyncHttpClientGet(String userName, String userPass) {
  94. // 创建异步的客户端对象
  95. AsyncHttpClient client = new AsyncHttpClient();
  96. // 请求的地址
  97. String url = "http://172.16.237.200:8080/video/login.do";
  98. // 创建请求参数的封装的对象
  99. RequestParams params = new RequestParams();
  100. params.put("username", userName); // 设置请求的参数名和参数值
  101. params.put("userpass", userPass);// 设置请求的参数名和参数
  102. // 发送get请求的时候 url地址 相应参数,匿名回调对象
  103. client.get(url, params,new AsyncHttpResponseHandler() {
  104. @Override
  105. public void onSuccess(int statusCode, Header[] headers,
  106. byte[] responseBody) {
  107. // 成功处理的方法
  108. System.out
  109. .println("statusCode-------------------" + statusCode);
  110. // 遍历头信息
  111. for (int i = 0; i < headers.length; i++) {
  112. Header header = headers[i];
  113. System.out.println("header------------Name:"
  114. + header.getName() + ",--Value:"
  115. + header.getValue());
  116. }
  117. // 设置控件内容
  118. tv_result.setText(new String(responseBody));
  119. }
  120. @Override
  121. public void onFailure(int statusCode, Header[] headers,
  122. byte[] responseBody, Throwable error) {
  123. // 失败处理的方法
  124. error.printStackTrace();
  125. }
  126. });
  127. }
  128. }

3.程序运行结果如下图:

时间: 2024-10-07 13:05:24

android-async-http开源项目GET方式 POST方式实现登陆的相关文章

第一个Android TV Launcher开源项目

Android TV Launcher开源项目 这个项目是机顶盒桌面,用来播放视频.显示图片.应用管理和其他针对机顶盒产品的设置.目前git和CSDN code上面都没有类似的开源项目,正好本人最近在开发类似产品,网上类似研究还非常少,完全自己实现还是比较困难.所以就把目前的项目开源出来,也有利于其他人少走弯路. git项目地址 CSDN code项目地址 项目框架结构 UI.adapter.实体类.图片cache.网络层. 这个层级关系还是和大部分项目是类似的. 功能模块的详细实现方式 这个部

GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便地使用所有版本的Android动作栏的设计模式. 对于Android 4.0及更高版本,ActionBarSherlock可以自动使用本地ActionBar实现,而对于之前没有ActionBar功能的版本,基于Ice Cream Sandwich的自定义动作栏实现将自动围绕布局.能够让开发者轻松开发

【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 Android热更新开源项目Tinker源码解析系类之三:so文件热更新 转载请标明本文来源:http://www.cnblogs.com/yyangblog/p/6252855.html更多内容欢迎star作者的github:https://github.com/LaurenceYang/artic

七款android地图 [Map] 开源项目框架分类总汇

七款android地图 [Map] 开源项目框架分类总汇: 1.AmapDemo仿照一号专车的地图界面 2.基于高德地图写的不同功能的地图应用 3.基于高德地图的gps.wifi.基站的智能选择定位 4.基于高德SDK搭建的出行类APP,高仿滴滴快的 5.高德地图便民搜索 6.百度地图 7.Android 高德地图gps定位

【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源热更新 Android热更新开源项目Tinker源码解析系类之三:so热更新 转载请标明本文来源:http://www.cnblogs

【凯子哥带你学Android】Android专用Log开源项目——KLog

在Android开发和调试的过程中,Log的使用是非常频繁的,一个好的Log工具可以帮你节省很多时间,所以凯子哥抽空写了个这个开源项目KLog,希望可以帮助大家提高开发效率,本开源库的灵感来自于Logger KLog的特点 运行演示 使用详解 KLogd KLogdString KLogdTagString KLogjsonString KLogjsonTagString 注意事项 使用JCenter引用 为什么叫KLog 如何设置Log的颜色 项目地址 KLog的特点 支持显示行号 支持显示L

Android热更新开源项目Tinker集成实践总结

前言 最近项目集成了Tinker,开始认为集成会比较简单,但是在实际操作的过程中还是遇到了一些问题,本文就会介绍在集成过程大家基本会遇到的主要问题. 考虑一:后台的选取 目前后台功能可以通过三种方式实现: 1.自己搭建后台布丁下发系统2.第三方提供的服务,目前如原微信simsun大神的个人tinkerpatch平台,目前出于内测阶段,暂时免费.后期应该会按下发量对app进行收费.3.腾讯Bugly提供的服务,提供了热更新的下发后台,集成到了bugly的升级sdk中.免费.根据公司的精神,我们选择

Android 快速发布开源项目到jcenter

转载请标明出处(请勿转载删除底部微博.微信等信息): http://blog.csdn.net/lmj623565791/article/details/51148825: 本文出自:[张鸿洋的博客] 大家在很多时候都希望让自己的开源项目可以更方便的让用户去使用,那么对于Android平台,一个很好的方式就是上传到jcenter,然后使用时通过添加compile引用即可. 对于上传到jcenter,也不算技术类的文章,而且已经有很多较好的文章可以参考,写之前我也大致百度了一下. 目前很多文章都是

如何用 Android Studio 导入开源项目以及常见错误的解决办法

声明:这篇文章完全来自这篇文章,感谢大神的相助.这篇文章纯粹是为了备份. 本篇以Github上最热门的MaterialDesign库,MaterialDesignLibrary来介绍怎样使用Android Sudio导入开源项目的,如果你和我一样刚刚从Eclipse转到AS,那本篇文章非常适合你. 如果不引入任何第三方库,不做自动化分渠道打包等操作,那可以在完全不了解Gradle的情况下进行Android项目的开发.但如果要想导入Github上的热门项目,必须首先熟悉Gradle. 1. Gra

Android手写开源项目和资料搜集

引言 Android的手写效率一直是件头疼的事情,比如手写效率.笔锋效果.手掌抑制等等,本文搜集了关于手写的开源项目和一些相关的文章资料. 开源项目 1 android-signaturepad 项目地址:android-signaturepad 项目介绍:这是一款银行手写签名的应用,通过event的getHistory方法获取存储在MotionEvent中的历史点,大大提高了手写的流畅度,通过算法实现了笔锋效果. 2  Markers 项目地址:Markers 项目介绍:这是一款带有笔锋效果的