Android开发之定义接口暴露数据

写了一个网络请求的工具类,然后想要获取到网络请求的结果,在网络工具类中写了一个接口,暴露除了请求到的数据

代码:

 1 package com.lijingbo.knowweather.utils;
 2
 3 import java.io.ByteArrayOutputStream;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.net.HttpURLConnection;
 7 import java.net.URL;
 8
 9
10 public class HttpUtils {
11     private static final String TAG = "HttpUtils";
12
13     public void getMethod(final String address) {
14         new Thread(new Runnable() {
15             @Override
16             public void run() {
17                 HttpURLConnection connection = null;
18                 try {
19                     URL url = new URL(address);
20                     connection = (HttpURLConnection) url.openConnection();
21                     connection.setRequestMethod("GET");
22                     connection.setConnectTimeout(5000);
23                     connection.setReadTimeout(5000);
24                     connection.connect();
25                     if ( connection.getResponseCode() == 200 ) {
26                         InputStream inputStream = connection.getInputStream();
27                         ByteArrayOutputStream baos = new ByteArrayOutputStream();
28                         byte[] buffers = new byte[1024];
29                         int len;
30                         while ( (len = inputStream.read(buffers)) != -1 ) {
31                             baos.write(buffers, 0, len);
32                         }
33                         String result = baos.toString();
34                         httpCallBack.onSuccess(result);
35                         LogUtils.e(TAG, "获取到的服务器信息为:" + result);
36                         baos.close();
37                         inputStream.close();
38
39                     }
40                 } catch ( IOException e ) {
41                     //网络错误
42                     httpCallBack.onError(e.toString());
43                     e.printStackTrace();
44                 } finally {
45                     if ( connection != null ) {
46                         connection.disconnect();
47                     }
48                 }
49             }
50         }).start();
51     }
52
53     private HttpCallBack httpCallBack;
54     public void setHttpListener(HttpCallBack httpCallBack){
55         this.httpCallBack=httpCallBack;
56     }
57
58     public  interface HttpCallBack {
59         void onSuccess(String result);
60         void onError(String error);
61     }
62 }

想要使用该工具类的地方,这样写:

代码:

 1         HttpUtils httpUtils=new HttpUtils();
 2         httpUtils.getMethod(url);
 3         httpUtils.setHttpListener(new HttpUtils.HttpCallBack() {
 4             @Override
 5             public void onSuccess(String result) {
 6                 LogUtils.e(TAG,"网络请求结果:"+result);
 7             }
 8
 9             @Override
10             public void onError(String error) {
11                 LogUtils.e(TAG,"网络请求结果:"+error);
12             }
13         });
时间: 2024-10-03 23:43:54

Android开发之定义接口暴露数据的相关文章

Android开发之利用SQLite进行数据存储

Android开发之利用SQLite进行数据存储 Android开发之利用SQLite进行数据存储 SQLite数据库简单介绍 Android中怎样使用SQLite 1 创建SQLiteOpenHelper对象并创建表 2 通过SQLiteDatabase对象运行增删改查操作 3 SQLiteDatabase之事务transaction 1.SQLite数据库简单介绍 SQLite.是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包括在一个相对小的C库中.它是D.RichardHip

50个Android开发技巧(24 处理ListView数据为空的情况)

在移动平台上为用户展示数据的一个经常用法是将数据填充进一个List内,而此时须要注意的一点就是: 原文地址:(http://blog.csdn.net/vector_yi/article/details/24936163) 怎样处理须要填充的数据为空的情况? ListView及其它继承自AdapterView的类都有一个简便的处理这样的情况的方法:setEmptyView(View). 当ListView的Adapter为空或者Adapter的isEmpty()方法返回true的时候,它将会把设

Android开发当中Parcelable接口的使用

对于Android来说传递复杂类型,主要是将自己的类转换为基础的字节数组,Activity之间传递数据是通过Intent实现的. Android序列化对象主要有两种方法,实现Serializable接口.或者实现Parcelable接口.实现Serializable接口是Java SE本身就支持的,而Parcelable是Android特有的功能,效率比实现Serializable接口高,而且还可以用在进程间通信(IPC)中.实现Serializable接口非常简单,声明一下就可以了.而实现Pa

50、转自知乎上android开发相见恨晚的接口

原文链接:http://www.zhihu.com/question/33636939 程序员软件开发Android 开发JavaAndroid修改 Android开发中,有哪些让你觉得相见恨晚的方法.类或接口?修改 Android(Java)开发中,有哪些方法或类(接口)很实用,但是你却没能在第一时间知道它?当有一天你发现它时,只想说一句:“What the f**k,还有这个!”修改 举报 添加评论分享• 邀请回答 按投票排序按时间排序 28 个回答 赞同123反对,不会显示你的姓名 Roc

Android开发---支付宝功能接口(支付功能)(转载!)

最近在做一个关于购物商城的项目,项目里面付款这块我选的是调用支付宝的接口,因为用的人比较多. 在网上搜索了以下,有很多这方面的教程,但大部分教程过于陈旧,而且描述的过于简单.而且支付宝提供的接口一直在更新,可能支付宝那边是为了让接口更容易被调用吧,以前有些老的教程稍微跟现在接口有些不能“对号入座”,于是,我决定抽空写一篇关于调用支付宝接口的文章,跟大家分享,让大家以最快的速度掌握如何调用支付宝接口的方法.如果写的不好,请大家多多指教哦. 不多说了,开写. 1,到支付宝官网,下载支付宝集成开发包,

Android 开发中使用Intent传递数据的方法

Activity之间通过Intent传递值,支持基本数据类型和String对象及它们的数组对象byte.byte[].char.char[].boolean.boolean[].short.short[].int.int[].long.long[].float.float[].double.double[].String.String[],还有采用实现Serializable.Parcelable接口的类对象传递数据的两种方法:一种是Bundle.putSerializable(Key,Obje

Android开发7:简单的数据存储(使?SharedPreferences)和文件操作

前言 啦啦啦~大家好,又见面啦~ 本篇博文讲和大家一起完成一个需要注册.登录的备忘录的,一起学习 SharedPreferences 的基本使用,学习 Android 中常见的文件操作方法,复习 Android 界面编程. 直接进入正题~ 基础知识 1.SharedPreferences 的使用 使用SharedPreferences储存用户名和密码,SharedPreferences是直接处理xml文件,不需要做字符串分割,存储效率会比使用内部存储,和外部存储存储用户名和密码高. (1) Sh

Android 开发 -------- 自己定义View 画 五子棋

自己定义View  实现 五子棋 配图: 代码: package com.example.fiveson; import java.util.LinkedList; import java.util.List; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.uti

Android 使用 Parcelable 定义可传递数据的Model

Parcelable数据 public class HotelRoom implements Parcelable { public HotelRoom () { this.adultOrderNumber = 1; this.roomNumber = 1; this.kidOrderNumber = 0; } /** 成年人订单数量*/ private int adultOrderNumber; /** 房间数量*/ private int roomNumber; /** 儿童订单数量*/ p