找呀志_通过开源框架引AsyncHttpClient处理get/post要求
一个、开源参考架构的方法。
方法一
找到下载的文件的源代码,Com中的src文件夹下
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhpMjEyOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
方法二
引入jar包到libs下
二、引用开源框架发送get请求给server步骤:
1.创建异步请求端对象
2.发送get请求,(get请求參数含义:请求的url地址。异步请求的handler)
3.在成功请求里(status:状态返回码,headers:头部请求信息,responseBody返回结果)设置控件内容
三、引用开源框架发送post请求给server步骤
1.创建异步请求端对象
2.发送post请求,(get请求參数含义:请求的url地址;异步请求的handler)
3.封装请求參数
4.在成功请求里(status:响应状态码,headers:响应头信息,responseBody对应内容的字节码)设置控件内容
补充:
查看帮助文档我们知道,在post方法中传递參数时候能够创建RequestParams的对象,put进你所想要赋的值。例如以下图:
实例解析:当用户登录时。在界面输出用户是否登录成功
执行结果
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhpMjEyOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
项目实现
1.布局文件:同login布局文件
2.在AndroidManifest.xml加入internet权限
<uses-permission android:name="android.permission.INTERNET"/>
3.LoginActivity的代码(代码中具体加了凝视,请细致阅读)
package com.example.android_httpasync; 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;
/**
* 通过开源框架AsyncHttpClient的get/post请求处理
* @author zhaoyazhi
*
*/
public class MainActivity extends Activity {
private EditText et_username;
private EditText et_password; private TextView tv_result; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
findView();
} /**
* 查找控件
*/
public void findView() {
et_password = (EditText) findViewById(R.id.editpass);
et_username = (EditText) findViewById(R.id.editusername);
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:// 进行登录操作
// 获取用户名密码
final String userName = et_username.getText().toString();
final String userPass = et_password.getText().toString(); // 推断是否为空
if (TextUtils.isEmpty(userName) || TextUtils.isEmpty(userPass)) {
Toast.makeText(getApplicationContext(), "用户名或者密码不能为空", 0)
.show();
} else {
Toast.makeText(getApplicationContext(), "发送请求道server", 0).show(); // loginByAsyncHttpClientGet(userName, userPass); loginAsyncHttpClientPost(userName, userPass); }
break; default:
break;
}
} /**
* 通过开源框架AsyncHttpClient的post请求处理
* @param userName
* @param userPass
*/
private void loginAsyncHttpClientPost(final String userName,
final String userPass) {
// 发送请求到server
AsyncHttpClient client = new AsyncHttpClient();
String url = "http://172.16.237.144:8080/Login/LoginServlet";
// 创建请求參数
RequestParams params = new RequestParams();
params.put("username", userName);
params.put("userpass", userPass);
// 运行post方法
client.post(url, params, new AsyncHttpResponseHandler() { @Override
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {
// 设置值
tv_result.setText(new String(responseBody));
} @Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {
// 打印错误信息
error.printStackTrace(); }
});
} /**
* 通过开源框架AsyncHttpClient的get请求处理
* @param userName
* @param userPass
*/
private void loginByAsyncHttpClientGet(final String userName,
final String userPass) {
// 创建异步请求端对象
AsyncHttpClient client = new AsyncHttpClient(); String url = "http://172.16.237.144:8080/Login/LoginServlet?username="
+ userName + "&userpass=" + userPass;
// 发送get请求对象
client.get(url, new AsyncHttpResponseHandler() {
@Override
// statusCode:状态返回码,headers:头部请求信息,responseBody返回结果
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {
tv_result.setText(new String(responseBody));
} @Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {
// 输出错误信息
error.printStackTrace();
}
});
}
}
为了加强我们理解,在onSuccess方法中增加一些測试语句:
在控制台输出结果例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhpMjEyOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
jar文件资源:http://download.csdn.net/detail/zhaoyazhi2129/7400787
源代码:http://download.csdn.net/detail/zhaoyazhi2129/7400799
版权声明:本文博客原创文章,博客,未经同意,不得转载。
找呀志_通过开源框架引AsyncHttpClient处理get/post要求的更多相关文章
- 找呀志_通过开源框架引AsyncHttpClient上传文件
一个.步骤: 1.加入权限(接入网络和可写) 2.获取上传文件的路径和推断是空的 3.如果为空.创建一个异步请求对象 4.创建上传文件路径 5.跑post请求(指定url路径.封装上传參数.新建Asy ...
- 找呀志_使用SQLiteDatabase增删改提供的搜索方法和事务
知识具体解释:http://blog.csdn.net/zhaoyazhi2129/article/details/9026093 MainActivity.java,User.java,BaseDa ...
- Pyhton开源框架(加强版)
info:Djangourl:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 ...
- Python开源框架
info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...
- 分布式计算开源框架Hadoop入门实践
目录(?)[+] Author :岑文初 Email: wenchu.cenwc@alibaba-inc.com msn: cenwenchu_79@hotmail.com blog: http:// ...
- iOS常用第三方开源框架和优秀开发者博客等
博客收藏iOS开发过程好的开源框架.开源项目.Xcode工具插件.Mac软件.文章等,会不断更新维护,希望对你们有帮助.如果有推荐或者建议,请到此处提交推荐或者联系我. 该文档已提交GitHub,点击 ...
- Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...
- Android酷炫实用的开源框架(UI框架)
Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...
- Android开源框架ImageLoader的完美例子
本文转载于:http://blog.csdn.net/wwj_748/article/details/10079311 2013年8月19日开源框架之Universal_Image_Loader学习 ...
随机推荐
- 复制(1)——SQLServer 复制简介
原文:复制(1)--SQLServer 复制简介 前言: SQLServer的复制技术最少从SQLServer2000时代已经出现,当初是为了分布式计算,不是为了高可用.但是到了今天,复制也成为了一种 ...
- 第十七章——配置SQLServer(2)——32位和64位系统中的内存配置
原文:第十七章--配置SQLServer(2)--32位和64位系统中的内存配置 前言: 本文讲述32位和64位系统中的内存配置,在SQLServer 2005/2008中,DBA们往往尝试开启AWE ...
- Codeforces Round #257 (Div. 1)449A - Jzzhu and Chocolate(贪婪、数学)
主题链接:http://codeforces.com/problemset/problem/449/A ------------------------------------------------ ...
- Zero Downtime Upgrade of Oracle 10g to Oracle 11g Using GoldenGate — 3
DDL Setup Steps SQL> grant execute on utl_file to ggs; Grant succeeded. Create GLOBALS file [orac ...
- Hadoop0.20.2 Bloom filter应用演示样例
1. 简单介绍 參见<Hadoop in Action>P102 以及 <Hadoop实战(第2版)>(陆嘉恒)P69 2. 案例 网上大部分的说明不过依照<Hadoop ...
- JavaScript面向对象旅程(下)
JavaScript面向对象旅程 剪不断,理还乱,是离愁. 前面已经提到过新语言开发的两个步骤,分别是:一.定义基本的数据类型,完善结构化编程语言的设计:二.为函数类型绑定this的概念,好在对象的方 ...
- hdu4705 Y 简单树形DP 2013多校训练第十场 J题
题意:求一棵树中不在一条链中的三个点的对数. 转化一下,用总对数减去在一条链上的三点对数即可. 考虑经过根节点,然后可能是不同的子树中各选一个:或者是子树中选一个,然后当前节点为根的子树以外的节点选一 ...
- Xcode5和6共处,如何发布应用程序存储
怎样你和我一样手贱安装了Xcode6,同一时候又须要公布应用到商店时,你会发现打好的包是通只是审核的. 验证报错: unable to validate application archives of ...
- Linux学习笔记——举例说,makefile 添加宏定义
0.前言 从学习C语言開始就慢慢開始接触makefile,查阅了非常多的makefile的资料但总感觉没有真正掌握makefile.假设自己动手写一个makefile总认为非常吃力. 所以特意 ...
- DB Error: 1 "unrecognized token: ":""
在网上查找http://blog.csdn.net/heihuifeng/article/details/6561615本文 .插入的字符串需加引號', [_db executeUpdate:[NSS ...