鸿蒙薅羊毛系列(1):HarmonyOS中免费调用百度智能云的图片审核能力
摘要: 百度智能云内容审核服务集成示例展示了在HarmonyOS(API 21)中的实现方案,包含获取Access Token、发起审核请求及结果解析的核心流程。通过HTTP请求调用百度云API,支持文本内容合规性检测(结论类型1-3分别对应合规/不合规/疑似),需注意异步处理、参数编码及权限配置(需ohos.permission.INTERNET)。开发者可扩展至图片审核,建议添加错误重试机制和
·
百度智能云为开发者提供了极具吸引力的免费配额政策,新用户注册后可享受包括计算实例、存储空间和数据库服务在内的免费资源额度,这显著降低了开发初期的成本门槛,允许开发者无需立即投入资金就能测试和部署应用,从而加速创新迭代、提升开发效率,并有效减少项目风险,使更多初创团队和个人开发者能够轻松利用云计算资源实现产品快速上线和市场验证。
以下是在HarmonyOS中使用API 21调用百度智能云内容审核服务的程序框架及代码示例:
程序框架
- 环境配置
- 添加网络权限
- 导入JSON解析库(如
ohos.global.util)
- 核心流程
- 生成签名(
access_token) - 构建HTTP请求
- 处理审核结果
- 生成签名(
- 异常处理
- 网络请求异常捕获
- API响应错误码解析
代码示例
import ohos.net.http.HttpRequest;
import ohos.net.http.HttpResponse;
import ohos.net.http.HttpClient;
import ohos.global.util.JsonHelper;
import java.io.IOException;
public class ContentAuditService {
// 百度云API配置
private static final String API_KEY = "YOUR_API_KEY";
private static final String SECRET_KEY = "YOUR_SECRET_KEY";
private static final String AUDIT_URL = "https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined";
// 获取Access Token
private String getAccessToken() throws IOException {
String tokenUrl = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials" +
"&client_id=" + API_KEY +
"&client_secret=" + SECRET_KEY;
HttpClient client = new HttpClient();
HttpRequest request = new HttpRequest(tokenUrl, HttpRequest.GET);
HttpResponse response = client.execute(request);
if (response.getCode() == 200) {
String json = response.getResponseString();
return JsonHelper.getString(json, "access_token");
}
throw new IOException("Token request failed: " + response.getCode());
}
// 执行内容审核
public void auditText(String text) {
try {
String token = getAccessToken();
String url = AUDIT_URL + "?access_token=" + token;
HttpRequest request = new HttpRequest(url, HttpRequest.POST);
request.setHeader("Content-Type", "application/x-www-form-urlencoded");
request.setRequestBody("text=" + text); // 需进行URL编码
HttpResponse response = new HttpClient().execute(request);
if (response.getCode() == 200) {
parseAuditResult(response.getResponseString());
}
} catch (IOException e) {
e.printStackTrace();
}
}
// 解析审核结果
private void parseAuditResult(String json) {
int conclusionType = JsonHelper.getInt(json, "conclusionType");
// 结论类型: 1-合规, 2-不合规, 3-疑似
// 具体处理逻辑...
}
}
关键说明
-
权限配置
在config.json中添加网络权限:{ "reqPermissions": [{ "name": "ohos.permission.INTERNET" }] } -
参数要求
text参数需进行URLEncoder.encode(text, "UTF-8")编码- 百度云API返回数据结构参考官方文档
-
异步处理
实际开发中需使用TaskDispatcher异步执行网络请求:TaskDispatcher dispatcher = TaskDispatcherFactory.getSerialTaskDispatcher(); dispatcher.asyncDispatch(() -> auditText("待审核文本"));
扩展建议
- 图片审核:替换
AUDIT_URL为/image_censor/v2/user_defined,改用image和imageType参数 - 错误重试:对
conclusionType=3(疑似)结果添加二次审核逻辑 - 性能优化:缓存
access_token(有效期通常为30天)
提示:请替换
YOUR_API_KEY和YOUR_SECRET_KEY为实际值,并处理敏感信息存储安全。
更多推荐
所有评论(0)