零基础学鸿蒙编程-网络请求

简要介绍

本文介绍如何在鸿蒙中使用网络请求,获取服务器数据并进行处理。

集成步骤

  1. entry工程的build.gradle中添加依赖
    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
  1. 在config.json中添加权限
    "reqPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
  1. 添加数据类:Task.java
public class Task {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

  1. 添加网络接口管理类:ApiManager.java
public class ApiManager {
    private static final String BASE_URL = "https://gitee.com/";

    private static ApiService apiService;
    private static ApiManager instance = new ApiManager();

    private ApiManager() {
        apiService = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .client(new OkHttpClient.Builder().build())
                .build().create(ApiService.class);
    }

    public static ApiManager getInstance() {
        return instance;
    }

    public ApiService getApiService() {
        return apiService;
    }
}
  1. 添加网络接口调用类:ApiService.java
public interface ApiService {
    @GET("hspbc/harmonyos_demos/raw/master/networkDemo/data.json")
    Call queryTask();
}

  1. java代码中调用:MainAbilitySlice.java
public class MainAbilitySlice extends AbilitySlice {

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        findComponentById(ResourceTable.Id_text).setClickedListener(component -> query());
    }

    private void query() {
        ApiManager.getInstance().getApiService().queryTask().enqueue(new Callback() {
            @Override
            public void onResponse(Call call, Response response) {
                if (!response.isSuccessful() || response.body() == null) {
                    onFailure(null, null);
                    return;
                }
                Task result = response.body();
                new ToastDialog(getContext()).setText(result.getName()).show();
            }

            @Override
            public void onFailure(Call call, Throwable throwable) {
                HiLog.warn(new HiLogLabel(HiLog.LOG_APP, 0, "===demo==="), "网页访问异常");
            }
        });
    }
}

效果图

完整源代码

https://gitee.com/hspbc/harmonyos_demos/tree/master/networkDemo

零基础系列

《零基础学安卓编程》
《零基础学Java编程》
《零基础学鸿蒙编程》

关于我

厦门大学计算机专业 | 前华为工程师
专注《零基础学编程系列》,包含:Java | 安卓 | 前端 | Flutter | 小程序 | 鸿蒙
全网可关注:花生皮编程

你可能感兴趣的:(零基础学鸿蒙编程-网络请求)