Okhttp网络框架
Okhttp配置
compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'com.squareup.okio:okio:1.10.0' //涉及到文件的上传和下载
<uses-permission android:name="android.permission.INTERNET"/>
Okhttp基本使用
Get同步请求
new Thread(new Runnable() {
@Override
public void run() {
try {
Response response = okHttpClient.newCall(request).execute();
final String string = response.body().string();
runOnUiThread(new Runnable() {
@Override
public void run() {
btn_1.setText(string);
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
Get异步请求
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String strgin = response.body().string();
runOnUiThread(new Runnable() {
@Override
public void run() {
btn_1.setText(strgin);
}
});
}
});
Post key-value请求表单 ..
Post请求提交 String Json 文件类型等
..
文件的下载
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Request request = new Request.Builder().url("https://www.baidu.com/img/baidu_jgylogo3.gif").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 {
InputStream inputStream = response.body().byteStream();
FileOutputStream fileOutputStream = new FileOutputStream(new File("/sdcard/logo.png"));
byte[] buffer= new byte[2048];
int len=0;
while ((len=inputStream.read(buffer))!=-1){
fileOutputStream.write(buffer,0,len);
}
fileOutputStream.flush();
Log.d("ol","ok");
}
});
请求的超时设置
private static OkHttpClient okHttpClient = new OkHttpClient();
static {
okHttpClient.setConnectTimeout(10);
okHttpClient.setReadTimeout(10);
okHttpClient.setWriteTimeout(10);
}