AsyncHttpClient get、post请求

来源:互联网 发布:双色球红球7个算法公式 编辑:程序博客网 时间:2024/05/21 09:14

异步HttpClient框架

发送get请求

    //创建异步的httpclient对象    AsyncHttpClient ahc = new AsyncHttpClient();    //发送get请求    ahc.get(path, new MyHandler());

* 注意AsyncHttpResponseHandler两个方法的调用时机

    class MyHandler extends AsyncHttpResponseHandler{        //http请求成功,返回码为200,系统回调此方法        @Override        public void onSuccess(int statusCode, Header[] headers,                //responseBody的内容就是服务器返回的数据                byte[] responseBody) {            Toast.makeText(MainActivity.this, new String(responseBody), 0).show();        }        //http请求失败,返回码不为200,系统回调此方法        @Override        public void onFailure(int statusCode, Header[] headers,                byte[] responseBody, Throwable error) {            Toast.makeText(MainActivity.this, "返回码不为200", 0).show();        }    }

发送post请求

  • 使用RequestParams对象封装要携带的数据

    //创建异步httpclient对象AsyncHttpClient ahc = new AsyncHttpClient();//创建RequestParams封装要携带的数据RequestParams rp = new RequestParams();rp.add("name", name);rp.add("pass", pass);//发送post请求ahc.post(path, rp, new MyHandler());
public class MainActivity extends Activity {    Handler handler = new Handler(){        public void handleMessage(android.os.Message msg) {            Toast.makeText(MainActivity.this, (String)msg.obj, 0).show();        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void click1(View v){        //获取用户输入的账号密码        EditText et_name = (EditText) findViewById(R.id.et_name);        EditText et_pass = (EditText) findViewById(R.id.et_pass);        String name = et_name.getText().toString();        String pass = et_pass.getText().toString();        String path = "http://169.254.244.136/Web2/servlet/Login";        //使用异步HttpClient发送get请求        AsyncHttpClient client = new AsyncHttpClient();        //把要提交的数据封装在rp对象中        RequestParams rp = new RequestParams();        rp.put("name", name);        rp.put("pass", pass);        //发送get请求        client.get(path, rp, new MyHandler());    }    class MyHandler extends AsyncHttpResponseHandler{        //请求成功时回调        @Override        public void onSuccess(int statusCode, Header[] headers,                byte[] responseBody) {            Toast.makeText(MainActivity.this, new String(responseBody), 0).show();        }        //请求失败时回调        @Override        public void onFailure(int statusCode, Header[] headers,                byte[] responseBody, Throwable error) {            Toast.makeText(MainActivity.this, "请求失败", 0).show();        }    }    public void click2(View v){        //获取用户输入的账号密码        EditText et_name = (EditText) findViewById(R.id.et_name);        EditText et_pass = (EditText) findViewById(R.id.et_pass);        String name = et_name.getText().toString();        String pass = et_pass.getText().toString();        String path = "http://169.254.244.136/Web2/servlet/Login";        //使用异步HttpClient发送post请求        AsyncHttpClient client = new AsyncHttpClient();        //把要提交的数据封装在rp对象中        RequestParams rp = new RequestParams();        rp.put("name", name);        rp.put("pass", pass);        //发送get请求        client.post(path, rp, new MyHandler());    }}
public class Tools {    public static String getTextFromStream(InputStream is){        byte[] b = new byte[1024];        int len;        ByteArrayOutputStream bos = new ByteArrayOutputStream();        try {            while((len = is.read(b)) != -1){                bos.write(b, 0, len);            }            //把字节数组输出流转换成字节数组,然后用字节数组构造一个字符串            String text = new String(bos.toByteArray());            return text;        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return null;    }}

参考:Android 网络