客户端
OkHttpClient.Builder builder=new OkHttpClient.Builder();
builder.connectTimeout(60, TimeUnit.SECONDS);
builder.readTimeout(1,TimeUnit.MINUTES);
OkHttpClient client = builder.build();
实例化接口回调
private static OkHttpUtils okHttpUtils=null;
public static OkHttpUtils getInstance(){
if(okHttpUtils==null){
synchronized (Object.class){
if(okHttpUtils==null){
okHttpUtils=new OkHttpUtils();
}
}
}
return okHttpUtils;
}
request对象
get
public void get_http(String url, final MyOkListener myOkListener){
Request request = new Request.Builder()
.url(url)
.get()
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
if(myOkListener!=null){
myOkListener.error(e.getMessage());
}
}
});
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
if(myOkListener!=null){
myOkListener.ok(string);
}
}
});
}
});
}
post
public void post_json(String url, HashMap<String,String> map, final MyOkListener myOkListener){
FormBody.Builder builder=new FormBody.Builder();
Set<Map.Entry<String, String>> entries = map.entrySet();
for (Map.Entry<String, String> entrie:entries){
builder.add(entrie.getKey(),entrie.getValue());
}
FormBody formBody = builder.build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
myOkListener.error(e.getMessage());
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
myOkListener.ok(string);
}
});
}
});
}
下载
public void down(String url, final String filePath, final MyFileListener myFileListener){
File file=new File(filePath);
if(file.exists()){
handler.post(new Runnable() {
@Override
public void run() {
myFileListener.exit();
}
});
}else{
Request.Builder builder=new Request.Builder();
Request request = builder.url(url)
.get()
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
myFileListener.error(e.getMessage());
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
InputStream inputStream = response.body().byteStream();
final long all = response.body().contentLength();
FileOutputStream fileOutputStream=new FileOutputStream(filePath);
int len=0;
int count=0;
byte[] bys=new byte[1024];
while ((len=inputStream.read(bys))!=-1){
fileOutputStream.write(bys,0,len);
count+=len;
final int finalCount = count;
handler.post(new Runnable() {
@Override
public void run() {
if(myFileListener!=null){
myFileListener.setProgress((int) (finalCount *100/all));
if(finalCount>=all){
myFileListener.finish();
}
}
}
});
}
}
});
}
}
上传
public void upload(String url,String pathName){
MultipartBody.Builder builder=new MultipartBody.Builder();
builder.setType(MultipartBody.FORM);
builder.addFormDataPart("file","upload_re.mp3",RequestBody.create(MediaType.parse("media/mp3"),pathName));
MultipartBody build = builder.build();
Request.Builder builder1=new Request.Builder();
Request request = builder1.url(url)
.post(build)
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
}
});
}