找呀志_通过开源框架引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学习 ...
随机推荐
- Python 统计Facebook用户爱好的个数
CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-12 @author: guaguastd @name: f ...
- cocos2d-x v3.2环境配置(现在3.x版本号可以配置该)
这里介绍的是Windows环境下的cocos2d-x配置. 前提: •Windows 7+ •cocos2d-x v3.2版本号(能够在http://www.cocos2d-x.org/down ...
- 何时使用SET和SELECT为变量赋值
原文:何时使用SET和SELECT为变量赋值 我们经常使用SET和SELECT来为变量复制,但是有时候,只能选其一来使用,下面来看看这些例子,本例中使用AdventureWorks数据库来做演示. 通 ...
- Duanxx的Altium Designer学习:PCB试想一下,在目前的水平
1 Shift+S 这个快捷键能高亮当前层,而且使其它层变成灰色.见下图: 2 隐藏指定层 在图中右下角的地方,右键.会弹出一个选项条.选择Hide Layers.能够选择想要隐藏的 ...
- asp.net webapi 多文件上传
使用enctype="multipart/form-data"来进行操作 /// <summary> /// 上传图片 /// </summary> /// ...
- java假设去请求一个网页的数据
我们能够通过在java程序中模拟浏览器一样,把数据抓下来,详细方法是在java程序中set header和cookie,以下是一个样例: public class NetConnection { pu ...
- DotNetOpenAuth实践
DotNetOpenAuth实践之搭建验证服务器 DotNetOpenAuth是OAuth2的.net版本,利用DotNetOpenAuth我们可以轻松的搭建OAuth2验证服务器,不废话,下面我们来 ...
- uva 10825 - Anagram and Multiplication(暴力)
题目链接:uva 10825 - Anagram and Multiplication 题目大意:给出m和n,要求找一个m位的n进制数,要求说该数乘以2~m中的随意一个数的结果是原先数各个位上数值的一 ...
- JAVA网络编程-----TCP沟通
java采纳TCP变速箱使用Socket和ServerSocket数据传输. 采纳tcp步模式数据传输: 1.设定client和服务器 ,分别对应Socket和ServerSocket 2.建立连接后 ...
- HDU3549 Flow Problem 【最大流量】
Flow Problem Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tot ...