JAR――android-async-http-1.4.5

  1. http框架:实现异步访问网络;

  2. 使用方法:

(1)创建HttpUtil

public class HttpUtil {

	private static AsyncHttpClient client = new AsyncHttpClient(); // 实例话对象
	
	static {
		client.setTimeout(11000); // 设置链接超时,如果不设置,默认为10s
	}

	/**
	 * url不带参数返回String
	 * @param urlString url
	 * @param res 处理handler
	 */
	public static void get(String urlString, AsyncHttpResponseHandler res){ 

		client.get(urlString, res);
	}

	/**
	 * url带参数返回String
	 * @param urlString url
	 * @param params url中的参数
	 * @param res 处理handler
	 */
	public static void get(String urlString, RequestParams params,AsyncHttpResponseHandler res){ // url里面带参数
	
		client.get(urlString, params, res);
	}

	/**
	 * 不带参数返回json
	 * @param urlString url 
	 * @param res 处理handler
	 */
	public static void get(String urlString, JsonHttpResponseHandler res){ // 不带参数,获取json对象或者数组
	
		client.get(urlString, res);
	}

	/**
	 * 带参数,返回json
	 * @param urlString url
	 * @param params url参数
	 * @param res 处理handler
	 */
	public static void get(String urlString, RequestParams params,JsonHttpResponseHandler res){ // 带参数,获取json对象或者数组
	
		client.get(urlString, params, res);
		
	}

	/**
	 * 不带参数,返回byte数据
	 * @param uString url
	 * @param bHandler 处理handler
	 */
	public static void get(String uString, BinaryHttpResponseHandler bHandler){ // 下载数据使用,会返回byte数据
	
		client.get(uString, bHandler);
	}
	
	/**
	 * 带参数的post 请求c#
	 * @param url
	 * @param params
	 * @param responseHandler
	 */
	public static void post(Context context,String url,HttpEntity entity, ResponseHandlerInterface responseHandler){
		
		client.post(context, url, entity, "application/json", responseHandler);//关键是设置content-type = "application/json"
	}

	public static AsyncHttpClient getClient() {
		return client;
	}
	
	

}

(2)在Activity中使用

//url获取
String url = getString(R.string.url);
			//初始化网络请求参数
			RequestParams params = new RequestParams();
			params.put(username, username);
			params.put(password, password);
			//网络请求,处理返回数据
			HttpUtil.get(MyConsts.URL_LOGIN, params, new JsonHttpResponseHandler(){
				//网络请求成功
				public void onSuccess(int statusCode, Header[] headers,
						JSONObject response) {
										
					//成功获取网络数据,在这里处理网络返回的数据
				}
				//服务器请求失败
				public void onFailure(int statusCode, Header[] headers,
						String responseString, Throwable throwable) {                                    //访网络失败
				
				}
				//请求结束,不管成功与否都调用该方法
				public void onFinish() {
					
                                        //无论成功与否都会执行该方法
					
				}
			});

			
			
			
//使用post请求c#服务
String username = et_RegisterUsername.getText().toString();
		String password = et_RegisterPasswd.getText().toString();
		String realname = et_RegisterTruename.getText().toString();

		if (Valid.valid(username) && Valid.stringIsEmail(username)
				&& Valid.valid(password) && Valid.valid(realname)) {

                        //将参数按照键值对的形式添加到一个json对象中,因为与c#交互需要传递一个json串
			JSONObject json = new JSONObject();
			try {
				json.put(usernameP, username);
				json.put(passwordP, password);
				json.put(realNameP, realname);
				json.put(originP, origin);

				StringEntity entity = new StringEntity(json.toString());

				HttpUtil.post(LoginActivity.this, url, entity,
						new JsonHttpResponseHandler() {
							public void onFinish() {
								cancelProgressDialog();
							}

							public void onFailure(int statusCode,
									Header[] headers, String responseString,
									Throwable throwable) {
						
								Log.d("failure:", responseString);
							}
							
							public void onSuccess(int statusCode,
									Header[] headers, JSONObject response) {
								
							}
						});
			} catch (JSONException e) {
				e.printStackTrace();
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}

特别注意:onFinish方法在onSucess()和onFailure()方法执行之前执行;

你可能感兴趣的:(网络,private,public)