Appearance
接口通用说明
权限校验
提示
- 非/v1/api-agent/开头的接口,为老版本接口,以各接口内部校验方式为准。
- 以/v1/api-agent/开头的接口,走通用接口校验方式, 需向智能体平台申请appId、appKey,作为研发团队/应用方唯一调用凭证,可以给多个fid下调用
表单类型GET/POST请求校验方式
推荐GET方式便于日志跟踪,POST方式仅限大字段提交
例如:appid:108366574 appkey:私钥
请求链接所有参数以及请求时间戳timestamp按字典排序拼接后,加上appkey做MD5
signature= md5("appId=108366574courseId=239236898timestamp=1743171942094unitId=147331"+"私钥")
请求时在header或者链接上直接带上signature
java
/**
使用TreeMap对字符串进行加密
*/
private String getJoinReqParams(HttpServletRequest request) {
StringBuilder reqParams = new StringBuilder();
Map<String, String[]> parameterMap = request.getParameterMap();
Map<String,String[]> sortedMap = new TreeMap<>(parameterMap);
for (Map.Entry<String, String[]> entry : sortedMap.entrySet()) {
String key = entry.getKey();
if ("signature".equals(key)) {
continue;
}
String[] values = entry.getValue();
reqParams.append(key).append("=").append(StrUtil.join(",", values));
}
return reqParams.toString();
}JSON类型POST请求校验方式
java
public class ApiCreateTaskTest {
@Test
public void test() {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.set("taskName", "任务名称");
jsonObject.set("taskDesc", "任务描述");
jsonObject.set("courseId", "244566631");
jsonObject.set("welcome", "欢迎语");
jsonObject.set("appId", "108366574");
jsonObject.set("timestamp", "174317194209");
String str = jsonObject.toString() + "私钥";
String signature = DigestUtil.md5Hex((str).getBytes("UTF-8"));
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json;charset=utf-8");
headers.put("signature", signature);
HttpResponse response = HttpUtil.createPost("http://robot-lc-gray.chaoxing.com/v1/api-agent/task/create")
.body(JSONUtil.toJsonStr(jsonObject))
.addHeaders(headers)
.execute();
String res = response.body();
System.out.println(res);
} catch (Exception e) {
}
}
}
json处理推荐使用hutool