zoukankan      html  css  js  c++  java
  • 找呀志_通过开源框架引AsyncHttpClient处理get/post要求

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

    方法一

    找到下载的文件的源代码,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文件资源:http://download.csdn.net/detail/zhaoyazhi2129/7400787

    源代码:http://download.csdn.net/detail/zhaoyazhi2129/7400799

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

  • 相关阅读:
    input 框变成不可编辑的。
    git 首次往远程仓库提交项目过程。(使用idea操作)
    nacos 导入项目配置(yml文件)步骤
    instr MySQL数据库函数用法
    遍历 map 的方法
    基于分布式思想下的rpc解决方案(1)
    深入理解通信协议-(1)
    Tomcat(3)--性能优化
    并发编程(5)--并发容器
    并发编程(4)--显示锁和AQS
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4754042.html
Copyright © 2011-2022 走看看