前些天写了个关于android OKHTTP get请求的回调接口,今天与大家共享一下,有不足之处请多指教!不多上代码!
当然我们首先定义一条接口:
<span style="font-size:18px;">/**
* Created by TP_HUYE on 2016/9/6.
* author:赵先森
* QQ:2691608900
*/
public interface Httpinfce {
void onResponse(String data);
}</span>
网络请求及激活接口的工具类
<pre name="code" class="java"> public class OkHttpUtils {
private String result;
Context context;
private static String res;
public void getHttp(String url,Context context) {
context = context;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
//请求失败将将传给调用者失败的字符串
result = "失败";
<span style="white-space:pre"> </span>
handler.sendEmptyMessage(1);
}
@Override
public void onResponse(Response response) throws IOException {
<span style="white-space:pre"> </span>//请求成功,直接将请求成功的值回传给调用者
result = response.body().string();
handler.sendEmptyMessage(1);
}
});
}
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 1:
<span style="white-space:pre"> </span>//调用接口里的方法传值
http.onResponse(result);
break;
}
}
};
Httpinfce http;
public void openOnFailure(Httpinfce httpinfce){
<span style="white-space:pre"> </span>//这是调用者调用时需要传进来一个接口的....
this.http = httpinfce;
}
}
//下面就是调用者了
<span style="font-size:18px;"> public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
}
private void initData() {
OkHttpUtils httpUtils = new OkHttpUtils();
httpUtils.openOnFailure(new Httpinfce() {
@Override
public void onResponse(String data) {
//介个参数就是您请求返回的值了
urldata = data;
if (urldata.equals(TextMark.HTTP_REULST)) {
//失败
//介个是缓存,可直接注释掉
String pp = SaveDataUtils.getString(MainActivity.this, "home", null);
handler.sendEmptyMessage(1);
Log.i("tetee", pp);
} else {
//成功
SaveDataUtils.saveData(MainActivity.this, "home", urldata);
}
Log.i("urldata", urldata);
}
});
httpUtils.getHttp("此处是您要请求的接口", MainActivity.this);
}
}</span>