以讯飞的提取关键字API为例: 控制台-讯飞开放平台 (xfyun.cn)
const https= require('https')
httpRequest(appkey: string, appid: string, txt: string) {
// 基础数据准备
let t = this.getSec().toString();//获取当前时间秒数
let p = this.getTypeParam();//根据api文档得到Param
let str = appkey + t + p;
//Testlog('str:' + str);
let c = this.MD5(str);//根据api计算MD5
const POST_DATA = 'text=' + txt;
// X-Appid string 讯飞开放平台注册申请应用的应用ID(appid)
// X-CurTime string 当前UTC时间戳 从1970年1月1日0点0 分0 秒开始到现在的秒数
// X-Param string 相关参数JSON串经Base64编码后的字符串,详见业务参数
// X-CheckSum string 令牌,计算方法:MD5(APIKey + X-CurTime + X-Param),三个值拼接的 字符串,进行MD5哈希计算(32位小写)
/*设置请求行和请求头*/
const POST_OPTIONS = {
host: "ltpapi.xfyun.cn",//注意只能包含域名,不能包含http协议或者路径(即'/v1/ke')
path: "/v1/ke",
method: 'POST',
headers: {//请求头
"Content-Type": "application/x-www-form-urlencoded",
'charset': 'utf-8',
'X-Appid': appid,
'X-CurTime': t,
'X-Param': p,
'X-CheckSum': c
}
};
// 接受返回的数据
function requestOnResponse(incomingMessage) {
//固定样式,最后data保存有响应体的数据,再格式化处理为_data
let data = []
incomingMessage.on('data', chunk => {
data.push(...chunk)
})
incomingMessage.on('end', () => {
let _date = JSON.parse(new TextDecoder().decode(new Uint8Array(data)))
console.log('data: ', _date)
})
}
// 超时 事件处理器
function requestOnTimeout() {
REQUEST.destroy()
}
// 错误 事件处理器
function requestOnError(err) {
REQUEST.destroy()
console.log('err: ', err)
}
// 创建 http 连接
const REQUEST = https.request(POST_OPTIONS, requestOnResponse)
// 添加事件监听
REQUEST.on('error', requestOnError)
REQUEST.on('timeout', requestOnTimeout)
// 设置超时
REQUEST.setTimeout(1000)
// 通过连接发送数据
REQUEST.write(POST_DATA, 'utf8')
REQUEST.end()
}