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

使用方法:

(1)创建HttpUtil

publicclassHttpUtil{privatestaticAsyncHttpClientclient=newAsyncHttpClient();//实例话对象static{client.setTimeout(11000);//设置链接超时,如果不设置,默认为10s}/***url不带参数返回String*@paramurlStringurl*@paramres处理handler*/publicstaticvoidget(StringurlString,AsyncHttpResponseHandlerres){client.get(urlString,res);}/***url带参数返回String*@paramurlStringurl*@paramparamsurl中的参数*@paramres处理handler*/publicstaticvoidget(StringurlString,RequestParamsparams,AsyncHttpResponseHandlerres){//url里面带参数client.get(urlString,params,res);}/***不带参数返回json*@paramurlStringurl*@paramres处理handler*/publicstaticvoidget(StringurlString,JsonHttpResponseHandlerres){//不带参数,获取json对象或者数组client.get(urlString,res);}/***带参数,返回json*@paramurlStringurl*@paramparamsurl参数*@paramres处理handler*/publicstaticvoidget(StringurlString,RequestParamsparams,JsonHttpResponseHandlerres){//带参数,获取json对象或者数组client.get(urlString,params,res);}/***不带参数,返回byte数据*@paramuStringurl*@parambHandler处理handler*/publicstaticvoidget(StringuString,BinaryHttpResponseHandlerbHandler){//下载数据使用,会返回byte数据client.get(uString,bHandler);}/***带参数的post请求c#*@paramurl*@paramparams*@paramresponseHandler*/publicstaticvoidpost(Contextcontext,Stringurl,HttpEntityentity,ResponseHandlerInterfaceresponseHandler){client.post(context,url,entity,"application/json",responseHandler);//关键是设置content-type="application/json"}publicstaticAsyncHttpClientgetClient(){returnclient;}}

(2)在Activity中使用

//url获取Stringurl=getString(R.string.url);//初始化网络请求参数RequestParamsparams=newRequestParams();params.put(username,username);params.put(password,password);//网络请求,处理返回数据HttpUtil.get(MyConsts.URL_LOGIN,params,newJsonHttpResponseHandler(){//网络请求成功publicvoidonSuccess(intstatusCode,Header[]headers,JSONObjectresponse){//成功获取网络数据,在这里处理网络返回的数据}//服务器请求失败publicvoidonFailure(intstatusCode,Header[]headers,StringresponseString,Throwablethrowable){//访网络失败}//请求结束,不管成功与否都调用该方法publicvoidonFinish(){//无论成功与否都会执行该方法}});//使用post请求c#服务Stringusername=et_RegisterUsername.getText().toString();Stringpassword=et_RegisterPasswd.getText().toString();Stringrealname=et_RegisterTruename.getText().toString();if(Valid.valid(username)&&Valid.stringIsEmail(username)&&Valid.valid(password)&&Valid.valid(realname)){//将参数按照键值对的形式添加到一个json对象中,因为与c#交互需要传递一个json串JSONObjectjson=newJSONObject();try{json.put(usernameP,username);json.put(passwordP,password);json.put(realNameP,realname);json.put(originP,origin);StringEntityentity=newStringEntity(json.toString());HttpUtil.post(LoginActivity.this,url,entity,newJsonHttpResponseHandler(){publicvoidonFinish(){cancelProgressDialog();}publicvoidonFailure(intstatusCode,Header[]headers,StringresponseString,Throwablethrowable){Log.d("failure:",responseString);}publicvoidonSuccess(intstatusCode,Header[]headers,JSONObjectresponse){}});}catch(JSONExceptione){e.printStackTrace();}catch(UnsupportedEncodingExceptione){e.printStackTrace();}}

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