OkHttp3基本用法(一)
450 字
2 分钟
OkHttp3基本用法(一)

依赖包
首先添加jar包,或着用maven或gradle自动导包。(我用的是3.9.1的包,自动导包时注意实际情况) maven:
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.9.1</version></dependency>gradle:
compile 'com.squareup.okhttp3:okhttp:3.9.1'注意:还需要okio的包 maven:
<dependency> <groupId>com.squareup.okio</groupId> <artifactId>okio</artifactId> <version>1.13.0</version></dependency>gradle:
compile 'com.squareup.okio:okio:1.13.0'GET请求
String path="http://rehtt.cn"; OkHttpClient okHttpClient=new OkHttpClient(); Request request=new Request.Builder() .url(path)//如果要在request的的header添加参数。例如Cookie,User-Agent什么的: .header("键", "值") .header("键", "值")
.build(); Call call=okHttpClient.newCall(request); try { Response response = call.execute(); Log.i("返回:",response.body().string()); //返回网页body标签内容//body()有多种输出方法,如果是下载文件就是response.body().bytes(),response.code()获取返回的状态码} catch (IOException e) { e.printStackTrace();}POST请求
post请求与get请求几乎一样,只是post需要提交表单,使用RequestBody。
RequestBody的数据格式都要指定Content-Type,常见的有三种:
application/x-www-form-urlencoded 数据是个普通表单
multipart/form-data 数据里有文件
application/json 数据是个json
普通表单:
RequestBody body = new FormBody.Builder() .add("键", "值") .add("键", "值") ... .build();文件表单:
RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("file", file.getName(),RequestBody.create(MediaType.parse("image/png"), file)) .build();另外如果你上传一个文件不是一张图片,但是MediaType.parse(“image/png”)里的”image/png”不知道该填什么,可以参考这个。
JSON表单:
MediaType JSON = MediaType.parse("application/json; charset=utf-8");RequestBody body = RequestBody.create(JSON, "传入的json");同步与异步
上文采用call.execute()执行http请求,但这是一个同步动作,是在主线程运行的。如果在UI线程执行就会抛异常。
所以在UI线程执行就要用异步,将call.execute()替换:
call.enqueue(new Callback() { @Override//请求失败调用 public void onFailure(Call call, IOException e) {
} @Override//请求成功调用 public void onResponse(Call call, Response response) throws IOException { Log.e("返回:",response.body().string()); }});onFailure()和onResponse()是在异步线程里执行的,所以如果你在Android把更新UI的操作写在这两个方法里面是会报错的,这个时候可以用runOnUiThread这个方法。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
new一个对象的引用在循环里与循环外的区别
Java笔记2018-02-14
2
AppCompatActivity的标题栏上加上返回按钮
Java笔记2018-03-25
3
Java、android彻底关闭应用方法
Java笔记2018-03-21
4
OkHttp封装
Java/Android代码2018-06-21
5
Android Dialog回传
Java/Android代码2018-06-21
随机文章随机推荐















加载更多…