您的位置:首页 > 理论基础 > 计算机网络

使用AsyncHttpClient 实现get和post请求

2016-10-30 19:46 501 查看
AsyncHttpClient简介:

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

实现get和post请求:

[java]
view plain
copy

public class MainActivity extends Activity {  
  
    private EditText usernameET;  
    private EditText passwordET;  
    private AsyncHttpClient client;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        usernameET = (EditText) this.findViewById(R.id.UsernamET);  
        passwordET = (EditText) this.findViewById(R.id.PaswordET);  
        client = new AsyncHttpClient();  
    }  
    public void get(View v) throws Exception{  
          
        String username = usernameET.getText().toString().trim();  
        String password = passwordET.getText().toString().trim();  
        String path = "";  
        String params = "username=" + URLEncoder.encode(username, "UTF-8") + "&password="+  URLEncoder.encode(password, "UTF-8");  
          
        client.get(path+"?"+params, new AsyncHttpResponseHandler() {  
            @Override  
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {  
                // TODO Auto-generated method stub  
                Toast.makeText(getApplicationContext(), "登陆成功", Toast.LENGTH_SHORT)  
                .show();  
            }  
              
            @Override  
            public void onFailure(int statusCode, Header[] headers,  
                    byte[] responseBody, Throwable error) {  
                // TODO Auto-generated method stub  
                Toast.makeText(getApplicationContext(), "登陆失败", Toast.LENGTH_SHORT)  
                .show();  
            }  
        });  
    }  
    public void post(View v){  
        String username = usernameET.getText().toString().trim();  
        String password = passwordET.getText().toString().trim();  
        String path = "";  
        RequestParams params  = new RequestParams();  
        params.put("username", username);  
        params.put("password", password);  
        client.post(path, params, new AsyncHttpResponseHandler() {  
              
            @Override  
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {  
                // TODO Auto-generated method stub  
                Toast.makeText(getApplicationContext(), "登陆成功", Toast.LENGTH_SHORT)  
                .show();  
            }  
              
            @Override  
            public void onFailure(int statusCode, Header[] headers,  
                    byte[] responseBody, Throwable error) {  
                // TODO Auto-generated method stub  
                Toast.makeText(getApplicationContext(), "登陆失败", Toast.LENGTH_SHORT)  
                .show();  
            }  
        });  
    }  
}  

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

[java]
view plain
copy

public void onClick(View v){  
          
        String path = pathText.getText().toString().trim();  
        client.get(path, new AsyncHttpResponseHandler() {  
              
            @Override  
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {  
                // TODO Auto-generated method stub  
                Bitmap image = BitmapFactory.decodeByteArray(responseBody, 0, responseBody.length);   
                Image.setImageBitmap(image);  
                Toast.makeText(getApplicationContext(), "获取成功", Toast.LENGTH_SHORT)  
                .show();  
            }  
              
            @Override  
            public void onFailure(int statusCode, Header[] headers,  
                    byte[] responseBody, Throwable error) {  
                // TODO Auto-generated method stub  
                Toast.makeText(getApplicationContext(), "获取失败", Toast.LENGTH_SHORT)  
                .show();  
            }  
        });  
    }  

当然,这个是最基础的用法了,之后会有关于AsyncHttpClient的上传和下载等用法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: