您的位置:首页 > 理论基础 > 计算机网络

【安卓】Okhttp网络框架笔记

2016-10-01 21:28 381 查看


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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: