您好,登錄后才能下訂單哦!
http框架:實現異步訪問網絡;
使用方法:
(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()方法執行之前執行;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。