compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'com.squareup.okio:okio:1.5.0'
compile 'com.google.code.gson:gson:2.2.4'
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
int i=msg.what;
//等于0失败
if (i==0){
String shi = (String) msg.obj;
okhttpgetListener.error(shi);
}
//等于1成功
if (i==1){
String json = (String) msg.obj;
okhttpgetListener.success(json);
}
}
};
private OkhttpgetListener okhttpgetListener;
public void getnetpost(String url,Map<String, String> params){
OkHttpClient okHttpClient = new OkHttpClient();
//3.x版本post请求换成FormBody 封装键值对参数
FormBody.Builder builder = new FormBody.Builder();
for (String key : params.keySet()) {
builder.add(key, params.get(key));
}
Request request = new Request.Builder().url(url).post(builder.build()).build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Message message=new Message();
message.obj="处理失败";
message.what=0;
handler.sendMessage(message);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
Message message=new Message();
message.obj=string;
message.what=1;
handler.sendMessage(message);
}
});
}
public interface OkhttpgetListener{
//失败的方法
void error(String error);
//成功的方法
void success(String json);
}
//主线程获取网络解析后json的方法
public void setOnOKHttpGetListener(OkhttpgetListener okhttpgetListener){
this.okhttpgetListener=okhttpgetListener;
}
//举例使用
原接口http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1
MainActivity使用的代码
private String net1="http://www.yulin520.com/a2a/impressApi/news/mergeList";
Map<String,String> map=new HashMap<>();
map.put("page","1");
map.put("pageSize","10");
ok.getnetpost(net1,map);
//调用接口回调方法 取得解析后的json
ok.setOnOKHttpGetListener(new Okhttppost.OkhttpgetListener() {