package com.gzsll.hupu.components.okhttp;
import java.io.File;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okio.BufferedSink;
import okio.Okio;
/**
* Created by sll on 2015/3/10.
*/
public class OkHttpHelper {
private OkHttpClient mOkHttpClient;
public OkHttpHelper(OkHttpClient mOkHttpClient) {
this.mOkHttpClient = mOkHttpClient;
}
/**
* 该不会开启异步线程。
*
* @throws IOException
*/
public Response execute(Request request) throws IOException {
return mOkHttpClient.newCall(request).execute();
}
/**
* 开启异步线程访问网络
*/
public void enqueue(Request request, Callback responseCallback) {
mOkHttpClient.newCall(request).enqueue(responseCallback);
}
/**
* 开启异步线程访问网络, 且不在意返回结果(实现空callback)
*/
public void enqueue(Request request) {
mOkHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
}
});
}
public String getStringFromServer(String url) throws IOException {
Request request = new Request.Builder().url(url).build();
Response response = execute(request);
if (response.isSuccessful()) {
return response.body().string();
} else {
throw new IOException("Unexpected code " + response);
}
}
public void httpDownload(String url, File target) throws Exception {
Request request = new Request.Builder().url(url).build();
Response response = mOkHttpClient.newCall(request).execute();
if (response.isSuccessful()) {
BufferedSink sink = Okio.buffer(Okio.sink(target));
sink.writeAll(response.body().source());
sink.close();
} else {
throw new IOException("Unexpected code " + response);
}
}
}