网页检测结果回调
更新时间:
回调说明
网页检测任务完成或失败后,服务可以将异步检测结果推送到你的回调地址。你需要按本文规范提供一个 HTTP 接口接收回调。
可以通过以下任一方式启用回调:
- 在 <控制台-服务配置> 中配置回调地址。
- 调用网页检测任务提交接口时传入
callbackUrl。请求中的 callbackUrl 优先级高于控制台配置的回调地址。
回调请求
- 请求 URL:
你在控制台配置或提交任务时传入的回调地址。
- 请求方法:
POST
- HTTP 请求 Header:
Header
值
描述
Content-Type
application/json
回调请求体格式
signature
*****
签名,验证请求的合法性,参照鉴权算法
接口鉴权
客户可通过配置完回调参数后分配的密钥信息字段进行接口鉴权。具体方式如下:
-
签名算法
1> 将接收的请求体参数按照 ASCII 码表升序顺序排序。
2> 将排序好的参数 append 成字符串。格式为:key1 + value1 + key2 + value2...。
3> 将配置完回调参数后生成的密钥 append 到 2> 步骤生成的字符串后。
4> 将 3> 步骤生成的字符串使用 UTF-8 进行编码,使用 MD5 进行加密生成 signature 参数值,并将其放入请求 Header 中。
-
示例代码
/**
* 生成签名
* @param secretKey 后台密钥
* @param params 接口请求参数名和参数值map,不包括signature参数名
* @return
*/
public static String signature(String secretKey, Map<String, String> params) {
String[] keys = params.keySet().toArray(new String[0]);
Arrays.sort(keys);
StringBuilder signBuilder = new StringBuilder();
for (String key : keys) {
signBuilder.append(key).append(params.get(key));
}
signBuilder.append(secretKey);
try {
return DigestUtils.md5Hex(signBuilder.toString().getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
// error
}
return null;
}
在控制台服务配置中配置回调密钥后,回调请求体为以下结构:
字段名
类型
描述
appId
String
项目标识
taskId
String
区分不同次调用的唯一标识
result
JSON String
回调结果,字段结构见下方“回调结果 JSON”
如果未配置回调密钥,服务会按下方“回调结果 JSON”结构直接推送结果,不携带 signature。
- 回调结果 JSON:
字段名
类型
描述
errorCode
Number
错误码,0 表示成功
errorMessage
String
错误消息
code
Number
任务状态码:0 检测完成,1 检测失败,2 检测中,3 taskId 无效
taskId
String
区分不同次调用的唯一标识
appId
String
项目标识
inputType
String
输入类型。网页检测返回 WEB
strategyId
String
本次任务使用的策略编号
result
Number
页面级检测结果:0 通过,1 疑似,2 不通过
items
Array
网页解析出的内容项检测结果
items:
字段名
类型
描述
itemId
String
内容项唯一标识
mediaType
String
媒体类型:TEXT、IMAGE、AUDIO 或 VIDEO
taskId
String
异步媒体项的服务侧任务 ID。同步检测项可能为空
sourceUrl
String
图片、音频或视频内容项的来源 URL
originalText
String
原始文本内容。文本项返回
filteredText
String
过滤后的文本内容。文本项命中不通过内容时返回
result
Number
内容项检测结果:0 通过,1 疑似,2 不通过
tags
Array
命中的分类信息
tags:
字段名
类型
描述
tag
Number
一级分类编码。具体含义请参考帮助中心的分类编码表
subTags
Array
二级分类信息
subTags:
字段名
类型
描述
subTag
Number
二级分类编码
- 回调请求示例:
{
"errorCode": 0,
"code": 0,
"taskId": "task_**************************",
"appId": "82100001",
"inputType": "WEB",
"strategyId": "DEFAULT",
"result": 2,
"items": [
{
"itemId": "text_1",
"mediaType": "TEXT",
"originalText": "Example page text",
"filteredText": "Example **** text",
"result": 2,
"tags": [
{
"tag": 150,
"subTags": [
{
"subTag": 150001
}
]
}
]
},
{
"itemId": "image_1",
"mediaType": "IMAGE",
"sourceUrl": "https://example.com/image.jpg",
"result": 0
}
]
}
- 启用验签后的回调请求示例:
{
"appId": "82100001",
"taskId": "task_**************************",
"result": "{\"errorCode\":0,\"code\":0,\"taskId\":\"task_**************************\",\"appId\":\"82100001\",\"inputType\":\"WEB\",\"strategyId\":\"DEFAULT\",\"result\":2,\"items\":[]}"
}
回调响应
你的接口接收到回调请求后,需要返回 JSON 响应。响应中 code: 0 表示接收成功。
字段名
类型
是否必需
描述
code
Number
必需
应答状态码,0 表示本次回调接收成功
message
String
可选
应答消息
- 响应示例:
{
"code": 0,
"message": "success"
}
如果响应体为空、响应 code 不为 0、请求超时,或回调接口返回错误,服务会重试回调。重试间隔从 1 秒开始,最多重试 3 次。
回调说明
网页检测任务完成或失败后,服务可以将异步检测结果推送到你的回调地址。你需要按本文规范提供一个 HTTP 接口接收回调。
可以通过以下任一方式启用回调:
- 在 <控制台-服务配置> 中配置回调地址。
- 调用网页检测任务提交接口时传入
callbackUrl。请求中的callbackUrl优先级高于控制台配置的回调地址。
回调请求
- 请求 URL:
你在控制台配置或提交任务时传入的回调地址。
- 请求方法:
POST
- HTTP 请求 Header:
| Header | 值 | 描述 |
|---|---|---|
| Content-Type | application/json | 回调请求体格式 |
| signature | ***** | 签名,验证请求的合法性,参照鉴权算法 |
接口鉴权
客户可通过配置完回调参数后分配的密钥信息字段进行接口鉴权。具体方式如下:
-
签名算法
1> 将接收的请求体参数按照 ASCII 码表升序顺序排序。
2> 将排序好的参数 append 成字符串。格式为:
key1 + value1 + key2 + value2...。3> 将配置完回调参数后生成的密钥 append 到 2> 步骤生成的字符串后。
4> 将 3> 步骤生成的字符串使用 UTF-8 进行编码,使用 MD5 进行加密生成
signature参数值,并将其放入请求 Header 中。 -
示例代码
/**
* 生成签名
* @param secretKey 后台密钥
* @param params 接口请求参数名和参数值map,不包括signature参数名
* @return
*/
public static String signature(String secretKey, Map<String, String> params) {
String[] keys = params.keySet().toArray(new String[0]);
Arrays.sort(keys);
StringBuilder signBuilder = new StringBuilder();
for (String key : keys) {
signBuilder.append(key).append(params.get(key));
}
signBuilder.append(secretKey);
try {
return DigestUtils.md5Hex(signBuilder.toString().getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
// error
}
return null;
}
在控制台服务配置中配置回调密钥后,回调请求体为以下结构:
| 字段名 | 类型 | 描述 |
|---|---|---|
| appId | String | 项目标识 |
| taskId | String | 区分不同次调用的唯一标识 |
| result | JSON String | 回调结果,字段结构见下方“回调结果 JSON” |
如果未配置回调密钥,服务会按下方“回调结果 JSON”结构直接推送结果,不携带 signature。
- 回调结果 JSON:
| 字段名 | 类型 | 描述 |
|---|---|---|
| errorCode | Number | 错误码,0 表示成功 |
| errorMessage | String | 错误消息 |
| code | Number | 任务状态码:0 检测完成,1 检测失败,2 检测中,3 taskId 无效 |
| taskId | String | 区分不同次调用的唯一标识 |
| appId | String | 项目标识 |
| inputType | String | 输入类型。网页检测返回 WEB |
| strategyId | String | 本次任务使用的策略编号 |
| result | Number | 页面级检测结果:0 通过,1 疑似,2 不通过 |
| items | Array | 网页解析出的内容项检测结果 |
items:
| 字段名 | 类型 | 描述 |
|---|---|---|
| itemId | String | 内容项唯一标识 |
| mediaType | String | 媒体类型:TEXT、IMAGE、AUDIO 或 VIDEO |
| taskId | String | 异步媒体项的服务侧任务 ID。同步检测项可能为空 |
| sourceUrl | String | 图片、音频或视频内容项的来源 URL |
| originalText | String | 原始文本内容。文本项返回 |
| filteredText | String | 过滤后的文本内容。文本项命中不通过内容时返回 |
| result | Number | 内容项检测结果:0 通过,1 疑似,2 不通过 |
| tags | Array | 命中的分类信息 |
tags:
| 字段名 | 类型 | 描述 |
|---|---|---|
| tag | Number | 一级分类编码。具体含义请参考帮助中心的分类编码表 |
| subTags | Array | 二级分类信息 |
subTags:
| 字段名 | 类型 | 描述 |
|---|---|---|
| subTag | Number | 二级分类编码 |
- 回调请求示例:
{
"errorCode": 0,
"code": 0,
"taskId": "task_**************************",
"appId": "82100001",
"inputType": "WEB",
"strategyId": "DEFAULT",
"result": 2,
"items": [
{
"itemId": "text_1",
"mediaType": "TEXT",
"originalText": "Example page text",
"filteredText": "Example **** text",
"result": 2,
"tags": [
{
"tag": 150,
"subTags": [
{
"subTag": 150001
}
]
}
]
},
{
"itemId": "image_1",
"mediaType": "IMAGE",
"sourceUrl": "https://example.com/image.jpg",
"result": 0
}
]
}
- 启用验签后的回调请求示例:
{
"appId": "82100001",
"taskId": "task_**************************",
"result": "{\"errorCode\":0,\"code\":0,\"taskId\":\"task_**************************\",\"appId\":\"82100001\",\"inputType\":\"WEB\",\"strategyId\":\"DEFAULT\",\"result\":2,\"items\":[]}"
}
回调响应
你的接口接收到回调请求后,需要返回 JSON 响应。响应中 code: 0 表示接收成功。
| 字段名 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| code | Number | 必需 | 应答状态码,0 表示本次回调接收成功 |
| message | String | 可选 | 应答消息 |
- 响应示例:
{
"code": 0,
"message": "success"
}
如果响应体为空、响应 code 不为 0、请求超时,或回调接口返回错误,服务会重试回调。重试间隔从 1 秒开始,最多重试 3 次。