Android联网app必用Get请求和Post请求的区别,网络编程代码实现

来源:互联网 发布:java 管理平台框架 编辑:程序博客网 时间:2024/05/16 13:53
Get请求优点:请求的参数拼接在url后面,没有请求体,使用简单 缺点:安全性能不高,有长度限制

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

HttpUrlConnection post方式提交步骤1.初始化Url,打开链接URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();2.设置请求方式为postconn.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.初始化HttpClientHttpClient 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对象获取requestCodeint 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里面的两个方法@Overridepublic void onSuccess(int statusCode, Header[] headers,            byte[] responseBody) {        //请求成功后会执行这个方法        //statusCode: 返回的状态吗        // headers:返回的头信息        // responseBody: 返回的内容}@Overridepublic 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里面的两个方法@Overridepublic void onSuccess(int statusCode, Header[] headers,            byte[] responseBody) {        //请求成功后会执行这个方法        //statusCode: 返回的状态吗        // headers:返回的头信息        // responseBody: 返回的内容}@Overridepublic void onFailure(int statusCode, Header[] headers,            byte[] responseBody, Throwable error) {        //请求失败后会执行这个方法        //statusCode: 返回的状态吗        // headers:返回的头信息        // responseBody: 返回的内容        // error:失败的原因}

0 0
原创粉丝点击