Get请求

优点:请求的参数拼接在url后面,没有请求体,使用简单 
缺点:安全性能不高,有长度限制



Post请求

优点:有请求体,安全性能高,没有长度限制 
缺点:编写麻烦



HttpUrlConnection post方式提交步骤
1.初始化Url,打开链接

URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
2.设置请求方式为post

conn.setRequestMethod("POST");  
3.设置提交类型为表单类型

conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
4.设置提交数据的长度

conn.setRequestProperty("Content-Length", data.length());
5.指定要给服务器写数据

conn.setDoOutput(true);
6.开启流,把数据以IO流的形式提交给服务器

conn.getOutputStream().write(data.getBytes());
7.获取返回码,处理逻辑

int code = conn.getResponseCode();
HttpClient
步骤:

1.初始化HttpClient

HttpClient client = new DefaultHttpClient();
2.初始化

HttpGet get = new HttpGet(url);-->get方式请求
HttpPost post = new HttpPost(url);-->post方式请求
3.如果是post请求,需要设置请求体

List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("key", value));
post.setEntity(new UrlEncodedFormEntity(parameters, "utf-8"))
4.执行

HttpResponse response=client.execute(request);
-->如果是post请求,放HttpPost对象,如果是get请求,放HttpGet对象;
返回的是response对象
5.根据Response对象获取requestCode

int code = getStatusLine().getStatusCode();
//如果是200,代表请求成功,400系列是找不到资源,500系列是服务器报错
6.获取返回的数据

InputStream is =response.getEntity().getContent();
可以用 EntityUtils.toString(response.getEntity());返回String类型字符串
AsyncHttpClient get方式请求服务器
1.初始化AsyncfHttpClient对象

AsyncHttpClient client = new AsyncHttpClient();
2.调用框架get方式提交的方法 

/** 
* url:请求的路径 
* responseHandler:传递一个实现了ResponseHandlerInterface的类 
*/ 
client.get(String url, ResponseHandlerInterface responseHandler); 
3.实现ResponseHandlerInterface里面的两个方法

@Override
public void onSuccess(int statusCode, Header[] headers,
            byte[] responseBody) {
        //请求成功后会执行这个方法
        //statusCode: 返回的状态吗
        // headers:返回的头信息
        // responseBody: 返回的内容
}
@Override
public void onFailure(int statusCode, Header[] headers,
            byte[] responseBody, Throwable error) {
        //请求失败后会执行这个方法
        //statusCode: 返回的状态吗
        // headers:返回的头信息
        // responseBody: 返回的内容
        // error:失败的原因
}
AsyncHttpClient Post方式请求服务器
1.初始化AsyncfHttpClient对象

AsyncHttpClient client = new AsyncHttpClient();
2.初始化参数体

RequestParams params = new RequestParams();
//1.如果传递的是字符串
params.put(key, value);
//2.如果传递的是文件
params.put(key,file);
//3.了解一下还可以传递map集合或者list集合等等
3.调用框架get方式提交的方法 

/** 
* url:请求的路径 
* responseHandler:传递一个实现了ResponseHandlerInterface的类 
* params:传递的参数 
* / 
client.post(String url, RequestParams params, ResponseHandlerInterface responseHandler);
4.实现ResponseHandlerInterface里面的两个方法

@Override
public void onSuccess(int statusCode, Header[] headers,
            byte[] responseBody) {
        //请求成功后会执行这个方法
        //statusCode: 返回的状态吗
        // headers:返回的头信息
        // responseBody: 返回的内容
}
@Override
public void onFailure(int statusCode, Header[] headers,
            byte[] responseBody, Throwable error) {
        //请求失败后会执行这个方法
        //statusCode: 返回的状态吗
        // headers:返回的头信息
        // responseBody: 返回的内容
        // error:失败的原因
}