一个、开源参考架构的方法。
方法一
找到下载的文件的源代码,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文件资源:
源代码:
版权声明:本文博客原创文章,博客,未经同意,不得转载。