阅读(2447) (11)

鸿蒙OS 使用指定网络进行数据访问

2020-09-17 10:01:22 更新

场景介绍

应用可以调用 API 接口来使用指定网络进行数据传输。在进行数据传输前,需要先建立自定义的网络类型。

接口说明

应用使用指定网络进行数据访问,所使用的接口说明如下。

类名 接口名 功能描述
NetSpecifier Builder() 创建一个指定网络实例。
NetManager setupSpecificNet(NetSpecifier netSpecifier, NetStatusCallback callback) 建立指定的数据网络。
removeNetStatusCallback(NetStatusCallback callback) 停止获取数据网络状态。

开发步骤

  1. 调用 NetSpecifier.Builder( )构建指定数据网络的实例。

  1. 调用 NetManager.setupSpecificNet() 建立数据网络,通过 callback 获取网络状态变化。

  1. 进行数据发送。

   NetManager netManager = NetManager.getInstance(null);

    
   private class MmsCallback extends NetStatusCallback {
       @Override
       public void onAvailable(NetHandle netHandle) {
           // 通过setAppNet把后续应用所有的请求都通过该网络进行发送
           netManager.setAppNet(netHandle);

    
           try {
               HttpURLConnection connection = null;
               String urlString = "https://www.huawei.com/";
               URL url = new URL(urlString);
               URLConnection urlConnection = netHandle.openConnection(url, java.net.Proxy.NO_PROXY);
               if (urlConnection instanceof HttpURLConnection) {
                   connection = (HttpURLConnection) urlConnection;
               }
               connection.setRequestMethod("GET");
               connection.connect();
               // 之后可进行url的其他操作
           } finally {
               connection.disconnect();
           }

           
           // 如果业务执行完毕,可以停止获取
           netManager.removeNetStatusCallback(this);
       }
   }

    
   MmsCallback callback = new MmsCallback();

    
   // 配置一个彩信类型的蜂窝网络
   NetSpecifier req = new NetSpecifier.Builder()
       .addCapability(NetCapabilities.NET_CAPABILITY_MMS)
       .addBearer(NetCapabilities.BEARER_CELLULAR)
       .build();

    
   // 建立数据网络,通过callback获取网络变更状态
   netManager.setupSpecificNet(req, callback);