OkHttp3 使用
2024-09-06 18:14:01
导入
compile 'com.squareup.okhttp3:okhttp:3.3.0'
GET请求
String url = "https://www.baidu.com/";
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
Call call = okHttpClient.newCall(request);
try {
Response response = call.execute();
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
POST请求
private void DownloadFile() { OkHttpClient.Builder client = new OkHttpClient.Builder();
//设置超时
client.connectTimeout(20, TimeUnit.SECONDS).writeTimeout(20, TimeUnit.SECONDS).readTimeout(20, TimeUnit.SECONDS).build(); OkhttpUtil.allowAllSSL(client); //传递的参数通过add连接
RequestBody formBody = new FormBody.Builder().add("key1", value1)
.add("key2", key2).add("key3", key3).build(); okhttp3.Request request = new okhttp3.Request.Builder().url(downloadString).post(formBody).build(); call = client.build().newCall(request);
call.enqueue(new Callback() { //失败的回调
@Override
public void onFailure(Call call, IOException e) { e.printStackTrace(); if (m_pDialog.isShowing()) { AlertText("网络连接超时,请检查您的网络连接。");
}
} //成功的回调
@Override
public void onResponse(Call call, okhttp3.Response response) throws IOException { InputStream is = null;
FileOutputStream fos = null; Headers responseHeaders = response.headers(); for (int i = 0; i < responseHeaders.size(); i++) { if (responseHeaders.name(i).equals("Content-Disposition")) { fileName = new String(responseHeaders.value(i)).substring(21, responseHeaders.value(i).length());
}
} try {
is = response.body().byteStream(); String dir = Environment.getExternalStorageDirectory()
+ "/sss/"; if (FileUtil.makeFolder(dir)) { File file = new File(dir, fileName);
fos = new FileOutputStream(file);
byte[] buf = new byte[1024];
int ch = -1; while ((ch = is.read(buf)) != -1) { fos.write(buf, 0, ch);
} fos.flush(); if (fos != null) { fos.close();
} OpenFile(); } else { AlertText("程序自动试图创建文件夹失败");
} } catch (Exception e) { e.printStackTrace(); if (m_pDialog.isShowing()) { AlertText("您所下载的内容不存在。");
} } finally { try {
if (is != null) is.close(); } catch (IOException e) { e.printStackTrace();
}
try {
if (fos != null) fos.close(); } catch (IOException e) { e.printStackTrace();
}
}
}
});
}
最新文章
- 用 Excel 测试“绘制两点间连线”的算法
- 七种机器内部排序的原理与C语言实现,并计算它们的比较次数与移动次数。
- Sublime Text 技巧
- webpack解惑:require的五种用法 (转)
- kali安装后的网络设置
- jboss性能优化
- 数独挑战(codevs 2924)
- Silverlight TabItem选中,未选中样式设置
- Linux大文件分割split和合并cat使用方法
- 第五十九篇、OC录制小视频
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]
- The Java™ Tutorials下载地址
- ACM比赛
- form表单传递下拉框的Value和Text值,不适用Jquery传递
- 一段获取app性能指标的py脚本
- JVM类加载以及执行的实战
- CSS文本超出2行就隐藏并且显示省略号
- C语言-最后一次作业
- HDU 1560 DNA sequence(DNA序列)
- 从零开始学习Java多线程(三)