使用AsyncHttpClient 实现get和post请求

来源:互联网 发布:设计房间的软件 编辑:程序博客网 时间:2024/05/21 11:12

AsyncHttpClient简介:

AsyncHttpClient庫 基於ApacheHttpClient框架,是一個異步的httpClient, 所有的http請求都在子線程中,但是callback執行的線程和創建這個callback的線程是同一個(也即主線程創建的callback那麼執行的時候也是在主線程中)


实现get和post请求:

[java] view plain copy
  1. public class MainActivity extends Activity {  
  2.   
  3.     private EditText usernameET;  
  4.     private EditText passwordET;  
  5.     private AsyncHttpClient client;  
  6.   
  7.     @Override  
  8.     protected void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.activity_main);  
  11.         usernameET = (EditText) this.findViewById(R.id.UsernamET);  
  12.         passwordET = (EditText) this.findViewById(R.id.PaswordET);  
  13.         client = new AsyncHttpClient();  
  14.     }  
  15.     public void get(View v) throws Exception{  
  16.           
  17.         String username = usernameET.getText().toString().trim();  
  18.         String password = passwordET.getText().toString().trim();  
  19.         String path = "";  
  20.         String params = "username=" + URLEncoder.encode(username, "UTF-8") + "&password="+  URLEncoder.encode(password, "UTF-8");  
  21.           
  22.         client.get(path+"?"+params, new AsyncHttpResponseHandler() {  
  23.             @Override  
  24.             public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {  
  25.                 // TODO Auto-generated method stub  
  26.                 Toast.makeText(getApplicationContext(), "登陆成功", Toast.LENGTH_SHORT)  
  27.                 .show();  
  28.             }  
  29.               
  30.             @Override  
  31.             public void onFailure(int statusCode, Header[] headers,  
  32.                     byte[] responseBody, Throwable error) {  
  33.                 // TODO Auto-generated method stub  
  34.                 Toast.makeText(getApplicationContext(), "登陆失败", Toast.LENGTH_SHORT)  
  35.                 .show();  
  36.             }  
  37.         });  
  38.     }  
  39.     public void post(View v){  
  40.         String username = usernameET.getText().toString().trim();  
  41.         String password = passwordET.getText().toString().trim();  
  42.         String path = "";  
  43.         RequestParams params  = new RequestParams();  
  44.         params.put("username", username);  
  45.         params.put("password", password);  
  46.         client.post(path, params, new AsyncHttpResponseHandler() {  
  47.               
  48.             @Override  
  49.             public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {  
  50.                 // TODO Auto-generated method stub  
  51.                 Toast.makeText(getApplicationContext(), "登陆成功", Toast.LENGTH_SHORT)  
  52.                 .show();  
  53.             }  
  54.               
  55.             @Override  
  56.             public void onFailure(int statusCode, Header[] headers,  
  57.                     byte[] responseBody, Throwable error) {  
  58.                 // TODO Auto-generated method stub  
  59.                 Toast.makeText(getApplicationContext(), "登陆失败", Toast.LENGTH_SHORT)  
  60.                 .show();  
  61.             }  
  62.         });  
  63.     }  
  64. }  


使用AsyncHttpClient实现网络图片的读取:

[java] view plain copy
  1. public void onClick(View v){  
  2.           
  3.         String path = pathText.getText().toString().trim();  
  4.         client.get(path, new AsyncHttpResponseHandler() {  
  5.               
  6.             @Override  
  7.             public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {  
  8.                 // TODO Auto-generated method stub  
  9.                 Bitmap image = BitmapFactory.decodeByteArray(responseBody, 0, responseBody.length);   
  10.                 Image.setImageBitmap(image);  
  11.                 Toast.makeText(getApplicationContext(), "获取成功", Toast.LENGTH_SHORT)  
  12.                 .show();  
  13.             }  
  14.               
  15.             @Override  
  16.             public void onFailure(int statusCode, Header[] headers,  
  17.                     byte[] responseBody, Throwable error) {  
  18.                 // TODO Auto-generated method stub  
  19.                 Toast.makeText(getApplicationContext(), "获取失败", Toast.LENGTH_SHORT)  
  20.                 .show();  
  21.             }  
  22.         });  
  23.     }  

当然,这个是最基础的用法了,之后会有关于AsyncHttpClient的上传和下载等用法
0 0