一、HTTP通信核心架构

1. 分层定位
  • 归属公共能力层(Shared层),提供标准化网络通信能力

  • 依赖底层协议栈

    • @ohos.net.http(HTTP/S)

    • @ohos.request(高级请求管理)

    • @ohos.security(传输安全)

2. 模块化设计
import http from '@ohos.net.http';  // 核心HTTP模块
import { BusinessError } from '@ohos.base';  // 异常处理

二、开发流程详解

1. 创建请求会话

let httpRequest = http.createHttp();  // 每个会话独立管理生命周期
2. 发起请求

httpRequest.request(
  "https://api.example.com/data", 
  {
    method: http.RequestMethod.GET,  // 支持GET/POST/PUT/DELETE
    header: { 
      'Content-Type': 'application/json',
      'Authorization': 'Bearer token' 
    },
    connectTimeout: 60000,  // 连接超时(ms)
    readTimeout: 60000      // 读取超时(ms)
  }, 
  (err: BusinessError, data: http.HttpResponse) => {
    // 回调处理
  }
);
3. 响应处理

if (!err) {
  let status = data.responseCode;  // 状态码
  let headers = data.header;       // 响应头
  let result = data.result;        // 支持多种数据类型:
  if (typeof result === 'string') {
    console.info(JSON.parse(result)); 
  } else if (result instanceof ArrayBuffer) {
    // 处理二进制数据
  }
} else {
  console.error(`Error code: ${err.code}, Message: ${err.message}`);
}

三、高阶能力实现

1. 多端网络感知

// 1. 获取网络状态
import connection from '@ohos.net.connection';
let netCap = connection.getDefaultNet().netCapabilities;

// 2. 动态调整策略
if (netCap.linkUpBandwidthKbps < 512) { 
  // 低速网络启用压缩
  requestOptions.header['Accept-Encoding'] = 'gzip'; 
}
2. 安全传输控制
安全机制 实现方式
证书校验 预置CA证书到/resources/rawfile目录
国密算法支持 启用TLS_ECC_SM4_SM3加密套件
双向认证 配置客户端证书clientCert属性

证书配置示例

httpRequest.request(
  "https://secure-api.com",
  {
    // ...
    caPath: '/resources/rawfile/cacert.pem',  // CA证书路径
    clientCert: {
      certPath: '/resources/rawfile/client.pem',
      keyPath: '/resources/rawfile/client.key',
      passwd: 'cert_password'
    }
  }
);

四、性能优化策略

1. 连接复用
  • 自动复用Keep-Alive连接(默认开启)

  • 手动控制:

    httpRequest.destroy(); // 主动释放连接
2. 数据压缩

// 请求启用压缩
requestOptions.header['Accept-Encoding'] = 'br, gzip';

// 响应解压(自动处理)
3. 智能重试

import { RetryPolicy } from '@ohos.request';

const policy: RetryPolicy = {
  maxRetryCount: 3,
  delayBase: 1000,  // 重试基础延迟(ms)
  backoffType: BackoffType.EXPONENTIAL  // 指数退避
};
httpRequest.setRetryPolicy(policy);

五、安全合规要求

  1. 权限声明

    // module.json5
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      },
      {
        "name": "ohos.permission.GET_NETWORK_INFO"
      }
    ]
  2. 敏感数据防护

    • 使用@ohos.security加密请求参数

    • 禁止在URL中传递敏感信息(自动审计告警)

  3. 国密合规

    import cryptoFramework from '@ohos.security.crypto';
    let sm4Cipher = cryptoFramework.createCipher('SM4_128|ECB|PKCS7');

六、典型问题解决方案

问题场景 解决策略
跨域请求失败 服务端配置CORS或使用HarmonyOS反向代理
证书链校验不通过 使用openssl检查证书链完整性
大数据传输超时 启用分块传输(Transfer-Encoding: chunked)
弱网环境请求失败 设置指数退避重试策略

华为官方建议

  • 生产环境必须启用HTTPS并定期轮换证书(参考《HarmonyOS应用安全白皮书》)

  • 使用@ohos.request替代原生HTTP模块实现智能调度(自动适配设备网络状态)


附:与传统Android开发的差异

能力 Android HarmonyOS
网络状态感知 ConnectivityManager @ohos.net.connection
证书管理 KeyStore rawfile+安全模块
国密算法支持 需第三方库 原生集成SM2/SM3/SM4
多端协同 不支持 分布式软总线自动路由
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐