Android中利用观察者模式对UrlConnection进行封装
来源:互联网 发布:javascript 光标 编辑:程序博客网 时间:2024/06/16 19:15
public class HttpUtils{private HttpCallback httpCallback; // 访问接口后的回调private String path; // 接口路径private String method; // 访问的方法private Map<String, String> data;private String content = "";private MyTask myTask;public HttpUtils(HttpCallback httpCallback, String path, String method,Map<String, String> data){super();this.httpCallback = httpCallback;this.path = path;this.method = method;this.data = data;myTask = new MyTask();}public void excute(){myTask.execute(method);}private class MyTask extends AsyncTask<String, Integer, String>{@Overrideprotected String doInBackground(String... params){if (method.equals("POST")){return doPostByUrlConnection();} else if (method.equals("GET")){return doGetByUrlConnection();}return null;}}private String doPostByUrlConnection(){URL url = null;StringBuffer parms = new StringBuffer();for(Map.Entry<String, String> entry: data.entrySet()){parms.append(entry.getKey()+"="+entry.getValue() +"&");}if (data.size() != 0){parms.deleteCharAt(parms.length() - 1);}byte datas[] = parms.toString().getBytes();try{url = new URL(path);System.out.println("path :"+path);} catch (MalformedURLException e){e.printStackTrace();}HttpURLConnection urlConnection = null;try{urlConnection = (HttpURLConnection) url.openConnection();urlConnection.setDoInput(true);urlConnection.setDoOutput(true);urlConnection.setRequestMethod("POST");OutputStream outputStream;outputStream = urlConnection.getOutputStream();outputStream.write(datas);AndroidTools.logS("PostCODE: " + urlConnection.getResponseCode());if (urlConnection.getResponseCode() == 200){InputStream inputStream = urlConnection.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));content = reader.readLine();httpCallback.Success(content);}else {httpCallback.Failed("服务器连接不稳定,请稍后再试");}} catch (IOException e){httpCallback.Failed("网络连接失败,请稍后再试");}return content;}private String doGetByUrlConnection(){URL url = null;StringBuffer parms = new StringBuffer();parms.append(path);parms.append("?");for (Map.Entry<String, String> entry : data.entrySet()){parms.append(entry.getKey()).append("=").append(entry.getValue()).append("&");}if (data.size() != 0){parms.deleteCharAt(parms.length() - 1);}System.out.println(path);try{url = new URL(parms.toString());} catch (MalformedURLException e){e.printStackTrace();}HttpURLConnection urlConnection;try{urlConnection = (HttpURLConnection) url.openConnection();urlConnection.setRequestMethod("GET");AndroidTools.logS("GETCODE: " + urlConnection.getResponseCode());if (urlConnection.getResponseCode() == 200){InputStream inputStream = urlConnection.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));content = reader.readLine();httpCallback.Success(content);}} catch (IOException e){httpCallback.Failed("网络连接失败,请稍后再试");e.printStackTrace();}return null;}}
public interface HttpCallback{public void Success(String success);public void Failed(String failed);}
1 0
- Android中利用观察者模式对UrlConnection进行封装
- android中对观察者模式的使用,Adapter中的观察者
- 利用Android回调机制对Dialog进行简单封装
- Android 利用APT对网络请求进行极简封装
- Android中观察者模式
- Java URLConnection请求的参数进行封装
- android中利用LruCache对图片进行缓存处理
- 使用观察者模式 对activemq进行操作产生的问题
- 对Android Log进行了封装
- Android 完美对BaseAdapter进行二次封装
- android开发:对Volley进行二次封装
- Java 中对数组进行封装
- 对springMVC框架中RowMapper进行封装
- 利用dlopen,dlsym对动态库进行类封装
- 利用封装、继承对Java代码进行优化
- android中URLConnection和HttpURLConnection
- Android中观察者模式的升入理解
- 观察者模式在android中使用
- 数组和字符串(面向对象篇)
- 【Cocos Creator 实战教程(0)】——写在前面
- spring aop中的propagation的7种配置的意思
- CSU-1409 集合的并(水~结构体排序)
- C++中二维数组总结
- Android中利用观察者模式对UrlConnection进行封装
- Java多线程学习
- flume
- Swift NSNotificationCenter的使用
- 数组排序-包含json数据格式的数组
- 线程
- 庖丁解牛之仿《闪传》实现文件传输(下)
- 绝对路径与相对路径
- java字符串与整数之间的互相转换