okhttp是常用的第三方库,跟retrofit、Volley一样都能做网络连线的请求。
今天就做个简单的okhttp实作。
网址:https://jsonplaceholder.typicode.com/posts
加入dependencies
implementation 'com.squareup.okhttp3:okhttp:4.7.2'
在androidManifest.xml添加权限
<uses-permission android:name="android.permission.INTERNET" />
okHttpClient:建立客户端类
private OkHttpClient okHttpClient =new OkHttpClient().newBuilder()
// .connectTimeout(5, TimeUnit.SECONDS). //设置Timeout连线时间
build();
Request:设置连线资讯
Request request =new Request.Builder()
.url("https://jsonplaceholder.typicode.com/posts/3")//连结的网址
.build();
Call:回传资讯
Call call=okHttpClient.newCall(request);
//异步执行
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d("OkHttp result:", e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d("OkHttp response:", response.body().string());
}
});
}
完整code
public class MainActivity extends AppCompatActivity {
private OkHttpClient okHttpClient =new OkHttpClient().newBuilder()
.build();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//GetResponeClick监听事件:将api用get方法取回
public void GetResponeClick(View view) {
Request request =new Request.Builder()
.url("https://jsonplaceholder.typicode.com/posts/3")
//.addHeader("","") //如果API有需要header,可使用addHeader发送
.build();
Call call=okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d("OkHttp result:", e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d("OkHttp response:", response.body().string());
}
});
}
//PostResponsClick监听事件:将api用post方法送出
public void PostResponsClick(View view) {
FormBody formBody=new FormBody.Builder() //FormBody设置要传的值
.add("UserId","101")
.add("id","101" )
.add("title","Hello Everyone")
.add("body","Nice to see you")
.build();
Request request =new Request.Builder()
.url("https://jsonplaceholder.typicode.com/posts")
.post(formBody) //将formBody写入
.build();
Call call =okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d("OkHttp result:", e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d("OkHttp response:", response.body().string());
}
});
}
}
get回传
post回传
HttpLoggingInterceptor
检查api传输情况的套件,非常好用
首先加入dependencies
implementation 'com.squareup.okhttp3:logging-interceptor:4.7.2'
要用的话在OkHttpClient加入addInterceptor
private OkHttpClient okHttpClient =new OkHttpClient().newBuilder()
.addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BASIC))
.build();
搜寻okhttp就可以看到Log了
<<: 追求JS小姊姊系列 Day7 -- 郑列展现的工具力(中)
因为刚开始创业,测试过好几个不同的系统,包含线上系统以及免费的单机系统,在使用过程中,发现eztoo...
第一种: 基本变数宣告 package main import "fmt" fu...
第一次参与铁人赛真是兴奋阿! 我原本从事传统产业,在四年多的日子里总是觉得很痛苦, 这让我想转换跑道...
前言: 本篇是参加学校开设的java资讯班的作业,由於对於笔者来说花蛮多时间的,所以想记录下来解题的...
每一次的重要决策,都左右着後面的行为发展,非常棒的产业蓝图关键链 跨足零售产业,电商产业,物流产业,...