博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
找呀志_通过开源框架引AsyncHttpClient处理get/post要求
阅读量:6200 次
发布时间:2019-06-21

本文共 4003 字,大约阅读时间需要 13 分钟。

一个、开源参考架构的方法。

方法一

找到下载的文件的源代码,Com中的src文件夹下

 

方法二

引入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进你所想要赋的值。例如以下图:

 

实例解析:当用户登录时。在界面输出用户是否登录成功

执行结果 

       

项目实现

1.布局文件:同login布局文件
http://blog.csdn.net/zhaoyazhi2129/article/details/26509763
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方法中增加一些測试语句:

 

在控制台输出结果例如以下:

 

 

 jar文件资源:

源代码:

 

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
傻啵似的学、、、、(简单文件权限)
查看>>
sort命令基本用法
查看>>
什么是手持机定位功能
查看>>
2019年5月10日-linux就该这么学-第4课
查看>>
大数据零基础学习hadoop入门教程
查看>>
Oracle教程之DML语句中MERGE的用法
查看>>
回顾.NET Remoting分布式开发
查看>>
Tomcat设置只需IP加端口访问项目网站
查看>>
python 通过paramiko模块批量执行ssh命令
查看>>
CentOS 6 配置公共key认证服务
查看>>
删除重复记录的几个sql
查看>>
【websocket-sharp】使用
查看>>
Apollo分布式部署
查看>>
网络之ARP防御
查看>>
基于ArcEngine开发自己的GIS——FreeGIS
查看>>
Django搭建简易监控系统
查看>>
Android开发资料推荐之20个Android游戏源码!
查看>>
centos安装lumen
查看>>
数据库相关基础知识总结
查看>>
【值得珍藏】2012 PHP热门资料64个+经典源码50个——下载目录 ...
查看>>