Android发送Okhttp请求并返回数据

大家好!今天给大家分享的是Android通过okhttp发送请求并返回数据。 

一、Okhttp?

Okhttp是目前Android主流的网络请求框架之一。话不多说,我们直接来看Okhttp怎么使用。

首先我们要在项目中添加Okhttp的依赖,找到build.gradle文件

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.1.1'
}

完整的build.gradle文件

dependencies {
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    implementation files('libs\\mysql-connector-java-5.1.0-bin.jar')
    implementation 'com.squareup.okhttp3:okhttp:4.1.1'
    implementation 'com.alibaba:fastjson:1.2.62'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

光添加依赖是不行的,我们还需要给项目添加网络权限,找到AndroidManifest.xml文件。

 

这样我们就完成了Okhttp的配置。

二、发送请求

在这里我是选择的点击一个按钮来发送请求。我们首先需要找到按钮,然后写它的点击事件,把发送请求的代码写到点击事件里。要注意的是这里需要try catch一下,不然容易有异常。我们方便捕获异常。

 houduan = findViewById(R.id.btn_houduan);//找到按钮
        houduan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new Thread(new Runnable() {//子线程
                    @Override
                    public void run() {
                        try {
                           OkHttpClient client = new OkHttpClient();//创建Okhttp实例
                           String url = "https://apis.tianapi.com/nba/index?key=2883d8175524da819017415676fdf911";//请求路径
                           Request request = new Request.Builder()
                                   .url(url)
                                   .get()
                                   .build();//get请求
                           Call call = client.newCall(request);
                           Response response = call.execute();//执行
                           String responseData = response.body().string();//接收数据
                           JSONArray array = new JSONArray(responseData);//将数据存到数组
                           for(int i = 0; i

在这里我们需要将代码放到子线程里,因为这是网络请求,如果放到主线程里网络不好的话会导致整个应用都卡起来,而放到子线程里不会影响主线程及其他线程的运行速度。

 如果相加参数需要写一个RequestBody,将参数放到里面,然后再放到请求里面传递即可。代码如下:

                           RequestBody requestBody = requestBuild
                                   .add("key",key)
                                   .build();
                           Request request = new Request.Builder()
                                   .url(url)
                                   .post(key)
                                   .build();//post请求

 代码写好之后我们运行起来,点击按钮

Android发送Okhttp请求并返回数据_第1张图片

 

 数据成功打印出来在控制台。我在这只是简单的打印输出了一下,如果想将数据返到页面可以用Bundle。


总结

这就是我今天想要分享的内容,只需要配置好项目写对代码就好,如果觉得有用的话记得留个赞!谢谢观看!
 

你可能感兴趣的:(okhttp,android,java)