android studio 30天学习笔记-day 7-介绍okhttp

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回传
https://ithelp.ithome.com.tw/upload/images/20210713/2013896646V7YV5mxX.png
post回传
https://ithelp.ithome.com.tw/upload/images/20210713/20138966ag65nP2Pgs.png

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了
https://ithelp.ithome.com.tw/upload/images/20210713/20138966ScwwQW0qTP.png


<<:  追求JS小姊姊系列 Day7 -- 郑列展现的工具力(中)

>>:  Powershell 入门之循环(上)

eztool ERP使用心得文

因为刚开始创业,测试过好几个不同的系统,包含线上系统以及免费的单机系统,在使用过程中,发现eztoo...

[Golang]宣告变数的方式

第一种: 基本变数宣告 package main import "fmt" fu...

前言:从零开始的程序学习之旅

第一次参与铁人赛真是兴奋阿! 我原本从事传统产业,在四年多的日子里总是觉得很痛苦, 这让我想转换跑道...

为了转生而点技能-Java难题纪录 (作业:染病接触之人员追踪链

前言: 本篇是参加学校开设的java资讯班的作业,由於对於笔者来说花蛮多时间的,所以想记录下来解题的...

未来流通产业情报站,资料团队分工厘清

每一次的重要决策,都左右着後面的行为发展,非常棒的产业蓝图关键链 跨足零售产业,电商产业,物流产业,...