在线调试
填写业务相关参数免费在线调试
该分类下无相关接口
在线起名v2版api,词库更多,可查名字的八字排盘三才五格命理等信息,支持复姓起名
会员->单独包月->次数包->点数计费->账户余额->免费额度
额度 | 价格 | 有效期 |
---|---|---|
1000 (次) | ¥ 15 低至0.015/次 | 3650天 |
5000 (次) | ¥ 70 低至0.014/次 | 3650天 |
10000 (次) | ¥ 130 低至0.013/次 | 3650天 |
50000 (次) | ¥ 600 低至0.012/次 | 3650天 |
100000 (次) | ¥ 998 低至0.00998/次 | 3650天 |
总免费额度 | 每月免费额度 | 每日免费额度 |
---|---|---|
5 (次) | 5 (次) 包含在总免费额度 | 5 (次) 包含在总免费额度 |
免费/测试用户请求频率限制 | 请求频率总限制 | 每日请求次数总限制 |
---|---|---|
3秒1次 每个免费用户的QPS总限制 | 1秒10次 每个用户QPS总限制 | 不限 每个用户每日请求总次数 |
无
接口地址:https://qqlykm.cn/api/qiming/index
返回格式:application/json
请求方式:HTTPGET
请求示例:请仔细查看以下接口文档再请求
名称 | 值 |
---|---|
Content-Type | application/x-www-form-urlencoded;charset:utf-8; |
名称 | 必填 | 类型 | 示例值 | 说明 |
---|---|---|---|---|
key | 是 | string | 35kj5jnlj53 | 接口密钥,在控制台->密钥管理查看 |
surname | 是 | string | 董 | 姓氏,支持复姓 |
sex | 是 | string | 2 | 性别参数,男为1,2为女 |
birthday | 是 | string | 2024-10-05 11:02:03 | 出生时间, 请按照示例值的格式请求 |
type | 是 | string | 2 | 单字名或双字名, 单字为1, 双字为2 |
name | 否 | string | 淑可 | 名字, 传递此参数可查询八字等信息 |
quantity | 否 | string | 30 | 起名返回数量控制, 最少5, 最多30 |
此接口与在线起名v1接口不同的是:本接口birthday参数可精确到时分秒,词库也更大,相对v1接口返回的名字会更好听,可控制起名返回的数量,查询八字等信息也更全。
详细请看请求示例(女名):
起名:?surname=董&sex=2&birthday=2024-10-03 05:06:00&type=2(surname参数支持复姓起名, 如 欧阳)
查询八字信息:?surname=董&name=淑可&birthday=2024-10-03 05:06:00
控制起名返回的数量:?surname=董&sex=2&birthday=2024-10-03 05:06:00&type=2&quantity=5(quantity参数非必填,每次请求可最低5个名字,最多30个名字,不填此参数默认返回30个名字)
请按照示例请求即可,birthday参数请严格按照示例的格式传参,否则会报错。
本接口采用次数包方式,成功返回结果 才会扣费,失败不计费。
名称 | 类型 | 说明 |
---|---|---|
code | int | 状态码 |
msg | string | 状态信息 |
data | string | 请求结果数据集 |
名称 | 类型 | 说明 |
---|---|---|
code | int | 状态码 |
msg | string | 状态信息 |
data | string | 请求结果数据集 |
data.birthday | string | 出生时间 |
data.name.surname | string | 姓氏 |
data.name.combine | string | 名字 |
data.name.surname_pinyin | string | 姓氏的拼音 |
data.name.surname_wuxing | string | 姓氏的五行属性 |
data.name.surname_bihua | string | 姓氏的笔画数 |
data.name.surname_bihua_jian | string | 姓氏的简体笔画数 |
data.name.surname_bushou | string | 姓氏的部首 |
data.name.combine_char1 | string | 名字的第一个字 |
data.name.combine_char1_pinyin | string | 名字第一个字的拼音 |
data.name.combine_char1_wuxing | string | 名字第一个字的五行属性 |
data.name.combine_char1_bihua | string | 名字第一个字的笔画数 |
data.name.combine_char1_bihua_jian | string | 名字第一个字的简体笔画数 |
data.name.combine_char1_bushou | string | 名字第一个字的部首 |
data.name.combine_char1_description | string | 名字第一个字的详细描述 |
data.name.combine_char2 | string | 名字的第二个字 |
data.name.combine_char2_pinyin | string | 名字第二个字的拼音 |
data.name.combine_char2_wuxing | string | 名字第二个字的五行属性 |
data.name.combine_char2_bihua | string | 名字第二个字的笔画数 |
data.name.combine_char2_bihua_jian | string | 名字第二个字的简体笔画数 |
data.name.combine_char2_bushou | string | 名字第二个字的部首 |
data.name.combine_char2_description | string | 名字第二个字的详细描述 |
data.ming_li.paipan_result.lunar_year | string | 排盘结果-农历年份 |
data.ming_li.paipan_result.lunar_month | string | 排盘结果-农历月份 |
data.ming_li.paipan_result.lunar_day | string | 排盘结果-农历日期 |
data.ming_li.paipan_result.lunar_hour | string | 排盘结果-农历时辰 |
data.ming_li.paipan_result.lunar_year_chinese | string | 排盘结果-农历年份的中文表示 |
data.ming_li.paipan_result.lunar_month_chinese | string | 排盘结果-农历月份的中文表示 |
data.ming_li.paipan_result.lunar_day_chinese | string | 排盘结果-农历日期的中文表示 |
data.ming_li.paipan_result.lunar_hour_chinese | string | 排盘结果-农历时辰的中文表示 |
data.ming_li.paipan_result.ganzhi_year | string | 排盘结果-干支年份 |
data.ming_li.paipan_result.ganzhi_month | string | 排盘结果-干支月份 |
data.ming_li.paipan_result.ganzhi_day | string | 排盘结果-干支日期 |
data.ming_li.paipan_result.ganzhi_hour | string | 排盘结果-干支时辰 |
data.ming_li.paipan_result.animal | string | 排盘结果-生肖 |
data.ming_li.paipan_result.term | string | 排盘结果-节气 |
data.ming_li.paipan_result.is_leap | string | 排盘结果-是否为闰月 |
data.ming_li.paipan_result.gregorian_year | string | 排盘结果-公历年份 |
data.ming_li.paipan_result.gregorian_month | string | 排盘结果-公历月份 |
data.ming_li.paipan_result.gregorian_day | string | 排盘结果-公历日期 |
data.ming_li.paipan_result.gregorian_hour | string | 排盘结果-公历时辰 |
data.ming_li.paipan_result.week_num | string | 排盘结果-星期几的数字表示 |
data.ming_li.paipan_result.week_name | string | 排盘结果-星期几的中文表示 |
data.ming_li.paipan_result.is_today | string | 排盘结果-是否为今天 |
data.ming_li.paipan_result.constellation | string | 排盘结果-星座 |
data.ming_li.paipan_result.ganshen_arr | string | 排盘结果-干神 |
data.ming_li.paipan_result.cang_gan_arr | string | 排盘结果-藏干 |
data.ming_li.paipan_result.ganzhi_shen_arr | string | 排盘结果-干支神 |
data.ming_li.wuxing_strength.wood_strength | string | 五行强度-木的强度 |
data.ming_li.wuxing_strength.fire_strength | string | 五行强度-火的强度 |
data.ming_li.wuxing_strength.earth_strength | string | 五行强度-土的强度 |
data.ming_li.wuxing_strength.gold_strength | string | 五行强度-金的强度 |
data.ming_li.wuxing_strength.water_strength | string | 五行强度-水的强度 |
data.ming_li.wuxing_strength.yue_zhi_strength | array | 五行强度-月支强度 |
data.ming_li.wuxing_strength.similar | array | 五行强度-相似的五行 |
data.ming_li.wuxing_suitable | 五行适宜分析 | |
data.ming_li.wuxing_suitable.yong_shen | string | 用神 |
data.ming_li.wuxing_suitable.xi_shen | string | 喜神 |
data.ming_li.wuxing_suitable.ji_shen | string | 忌神 |
data.ming_li.wuxing_suitable.chou_shen | string | 仇神 |
data.ming_li.wuxing_suitable.suggest | string | 建议 |
data.ming_li.dishi | 地势地支 | |
data.ming_li.dishi.nian | string | 年柱 |
data.ming_li.dishi.yue | string | 月柱 |
data.ming_li.dishi.ri | string | 日柱 |
data.ming_li.dishi.shi | string | 时柱 |
data.ming_li.nayin | 纳音分析 | |
data.ming_li.nayin.nian | string | 年柱纳音 |
data.ming_li.nayin.yue | string | 月柱纳音 |
data.ming_li.nayin.ri | string | 日柱纳音 |
data.ming_li.nayin.shi | string | 时柱纳音 |
data.ming_li.xunkong | 旬空分析 | |
data.ming_li.xunkong.nian | string | 年旬空 |
data.ming_li.xunkong.yue | string | 月旬空 |
data.ming_li.xunkong.ri | string | 日旬空 |
data.ming_li.xunkong.shi | string | 时旬空 |
data.ming_li.char1_wuxing_analyse | string | 名字第一个字的五行分析 |
data.ming_li.char2_wuxing_analyse | string | 名字第二个字的五行分析 |
data.ming_li.combine_wuxing_analyse | string | 名字组合的五行分析 |
data.ming_li.sancai_analyse | 命理三才分析 | |
data.ming_li.sancai_analyse.name | string | 三才名称 |
data.ming_li.sancai_analyse.score | string | 三才评分 |
data.ming_li.sancai_analyse.level | string | 三才等级 |
data.ming_li.sancai_analyse.caiyun | string | 财运 |
data.ming_li.sancai_analyse.gaishu | string | 概述 |
data.ming_li.sancai_analyse.jiankang | string | 健康 |
data.ming_li.sancai_analyse.jiating | string | 家庭 |
data.ming_li.sancai_analyse.shiye | string | 事业 |
data.ming_li.sancai_analyse.xingge | string | 性格 |
data.score | 评分信息 | |
data.score.wenhua | number | 文化评分 |
data.score.ming_li | number | 命理评分 |
data.score.sheng_xiao | number | 生肖评分 |
data.score.wu_ge | number | 五格评分 |
data.score.overall | number | 总评分 |
data.wenhua | 名字文化分析 | |
data.wenhua.yin_lv | string | 名字音律分析 |
data.wenhua.zi_xing | string | 名字字形分析 |
data.wenhua.char_idiom_arr | string | 名字相关的成语词语 |
data.wenhua.description_str | string | 名字相关的成语词语解释 |
data.wenhua.description | string | 名字相关的成语词语解释 |
data.sheng_xiao | 生肖分析 | |
data.sheng_xiao.relation_description | string | 生肖关系分析 |
data.sheng_xiao.suitable_bushou | string | 生肖适合的部首 |
data.wu_ge | 五格分析 | |
data.wu_ge.tian_ge | 天格分析 | |
data.wu_ge.ren_ge | 人格分析 | |
data.wu_ge.di_ge | 地格分析 | |
data.wu_ge.wai_ge | 外格分析 | |
data.wu_ge.zong_ge | 总格分析 | |
data.xxx_ge.mean | string | 五格-含义 |
data.xxx_ge.description | string | 五格-描述 |
data.xxx_ge.ji_xiong | string | 五格-吉凶 |
data.xxx_ge.explain | string | 五格-解释 |
起名示例返回:
{
"code": 200,
"msg": "获取成功",
"data": {
"surname": "董",
"sex": "2",
"birthday": "2024-10-03 05:06:00",
"type": "2",
"list": [
{
"name": "益君"
},
{
"name": "凌曦"
},
{
"name": "宜静"
},
{
"name": "依云"
},
{
"name": "若晞"
},
{
"name": "欣予"
},
{
"name": "泽沐"
},
{
"name": "雨梦"
},
{
"name": "霁月"
},
{
"name": "羽童"
},
{
"name": "予兮"
},
{
"name": "思渝"
},
{
"name": "梦桐"
},
{
"name": "佳菲"
},
{
"name": "玉麒"
},
{
"name": "淑可"
},
{
"name": "楚晴"
},
{
"name": "悦宸"
},
{
"name": "雅涵"
},
{
"name": "语兮"
},
{
"name": "若诗"
}
]
},
"text": {
"copyright": "公共API https://qqlykm.cn"
}
}
八字查询示例返回:
{
"code": 200,
"msg": "获取成功",
"data": {
"birthday": "2024-10-03 05:06:00",
"name": {
"surname": "董",
"combine": "淑可",
"surname_pinyin": "dǒng",
"surname_wuxing": "木",
"surname_bihua": "15",
"surname_bihua_jian": "12",
"surname_bushou": "艹",
"combine_char1": "淑",
"combine_char1_pinyin": "shū",
"combine_char1_wuxing": "水",
"combine_char1_bihua": "12",
"combine_char1_bihua_jian": "11",
"combine_char1_bushou": "氵",
"combine_char1_description": "淑字的本义是指流水清澈,后来也指女性的外表美丽,心地善良。",
"combine_char2": "可",
"combine_char2_pinyin": "kě",
"combine_char2_wuxing": "木",
"combine_char2_bihua": "5",
"combine_char2_bihua_jian": "5",
"combine_char2_bushou": "口",
"combine_char2_description": "五行为木、火,本义为唱,引申为许可、同意、准许等义。在人名用字中一般有适合、美好等含义,同时也为助字,起强调另外一个字的作用。"
},
"ming_li": {
"paipan_result": {
"lunar_year": "2024",
"lunar_month": "09",
"lunar_day": "01",
"lunar_hour": "05",
"lunar_year_chinese": "二零二四",
"lunar_month_chinese": "九月",
"lunar_day_chinese": "初一",
"lunar_hour_chinese": "卯时",
"ganzhi_year": "甲辰",
"ganzhi_month": "癸酉",
"ganzhi_day": "庚子",
"ganzhi_hour": "己卯",
"animal": "龙",
"term": null,
"is_leap": false,
"gregorian_year": "2024",
"gregorian_month": "10",
"gregorian_day": "03",
"gregorian_hour": "05",
"week_num": 4,
"week_name": "星期四",
"is_today": false,
"constellation": "天秤",
"ganshen_arr": [
"偏财",
"伤官",
"日主",
"正印"
],
"cang_gan_arr": [
[
"戊",
"乙",
"癸"
],
[
"辛"
],
[
"癸"
],
[
"乙"
]
],
"ganzhi_shen_arr": [
[
"偏印",
"正财",
"伤官"
],
[
"劫财"
],
[
"伤官"
],
[
"正财"
]
]
},
"wuxing_strength": {
"wood_strength": 4,
"fire_strength": 0,
"earth_strength": 0.8,
"gold_strength": 12,
"water_strength": 11.25,
"yue_zhi_strength": [
"死",
"囚",
"休",
"旺",
"相"
],
"similar": [
"金",
"土"
]
},
"wuxing_suitable": {
"yong_shen": "金",
"xi_shen": "土",
"ji_shen": "木",
"chou_shen": "水",
"suggest": "日主天干(庚金)在命局五行中较弱,宜弥补同类五行来增加金的旺度。命局中财星多,财多身弱,喜用比劫。可补身弱财多之不足,帮身担财。因此金就是最喜五行。由于印星能够生身耗财。因此土是次喜五行。"
},
"dishi": {
"nian": "养",
"yue": "帝旺",
"ri": "死",
"shi": "胎"
},
"nayin": {
"nian": "覆灯火",
"yue": "剑锋金",
"ri": "壁上土",
"shi": "城头土"
},
"xunkong": {
"nian": "寅卯",
"yue": "戌亥",
"ri": "辰巳",
"shi": "申酉"
},
"char1_wuxing_analyse": "命局五行忌水,将会放大水五行的缺陷,变的急躁,易出祸端,平生多波折,人生起伏较大。",
"char2_wuxing_analyse": "命局五行字忌木,将会放大木五行的缺陷,变的性格倔强,清高自大,“宁愿站着死,不愿跪着生”。",
"combine_wuxing_analyse": "水木组合,水生木,木旺。这种组合的人心底善良,富有智慧,做事稳健,人缘好。其人意志坚定,为理想能奋斗到底,耐性佳,能忍受艰苦,依靠自身的努力,取得人生和事业上的成功。",
"sancai_analyse": {
"name": "木水木",
"score": "90",
"level": "佳",
"caiyun": "财运佳,但须防意外牵累或损失。",
"gaishu": "聪明好学,足智多谋,因“水”生“木”,其人富有仁慈心,成功运佳。",
"jiankang": "身心健康,“木”偏旺,宜注意神经衰弱、肝胆方面的疾病。",
"jiating": "因主观太强,家庭有些不太美满,若能忍耐,自无大碍。",
"shiye": "事业运不错,可一展抱负,但谨防受朋友的拖累而受苦。",
"xingge": "聪明机智,善谋略,刚柔相济。"
}
},
"score": {
"wenhua": 92.5,
"ming_li": 38,
"sheng_xiao": 95,
"wu_ge": 90,
"overall": 70.7
},
"wenhua": {
"yin_lv": "董淑可声调为上声、阴平、上声,声律优美,朗朗上口。",
"zi_xing": "淑为左中右结构,笔画11画;可为半包围结构,笔画5;字型优美,利于书写。",
"char_idiom_arr": [
"窈窕淑女",
"终温且惠,淑慎其身",
"淑质英才",
"淑人君子",
"楚楚可人",
"幽兰不可俪徒自绕阳春鸢飞入鹰隼鱼目俪玙璠",
"不可言传",
"秀色可餐",
"锐不可当"
],
"description_str": "窈窕淑女 楚楚可人 终温且惠,淑慎其身 幽兰不可俪徒自绕阳春鸢飞入鹰隼鱼目俪玙璠 淑质英才 不可言传 淑人君子 秀色可餐 ",
"description": [
"窈窕淑女 楚楚可人",
"终温且惠,淑慎其身 幽兰不可俪徒自绕阳春鸢飞入鹰隼鱼目俪玙璠",
"淑质英才 不可言传",
"淑人君子 秀色可餐"
]
},
"sheng_xiao": {
"relation_description": "命主生肖属龙:辰戌冲,忌讳包含戌、狗的汉字;卯辰相害,忌讳包含卯、兔的汉字;辰自刑,忌讳包含辰、龙的汉字。",
"suitable_bushou": "子、氵、水、雨、申、袁、示、鳥、酉、西、兆、非、羽、主、王、玉、君、帝、言、長、大、天、冠、衣、糸、巾、彡、日、馬、午、金、白、亠、爪"
},
"wu_ge": {
"tian_ge": {
"mean": "贵人相助兴家兴业的大吉数。",
"description": "厚重",
"ji_xiong": "吉",
"explain": "反凶化吉象。位尊望重,建立基业。雅量厚重,足智多谋,善于协调,所谋如意,家门繁荣,福禄寿俱全。为大事大业可成,富贵发达的好暗示。属温和之首领运数。"
},
"ren_ge": {
"mean": "欲望无休止的诽难运数。",
"description": "增长",
"ji_xiong": "凶",
"explain": "欲望无止境,自信心过强,不容他人言语,多受诽谤攻击,而易致失败。始以其智谋,努力奋斗博得名利。待过中年,势渐趋下,内外酿出不和,难以发达到老,假使自身温顺富有,也不免内部背后是非不息。大多为半途中折之象。或因其他运的关系而陷于刑罚、孤独、死于逆难等。"
},
"di_ge": {
"mean": "突破万难的刚柔兼备数。",
"description": "刚强",
"ji_xiong": "吉",
"explain": "权威刚强,意志坚定,勇往直前,具有突破万难的气力。成就大功大业,但因赋性过刚,自我心强而恐与人不和,反招事非厄患,遂致失败,慎戒则为大吉。女性有此数者易流于男性,宜涵养女德,存主温和,福禄自然随之。先天条件弱的妇女反用此数为妥。"
},
"wai_ge": {
"mean": "安稳余庆吉人天相数。",
"description": "安稳",
"ji_xiong": "吉",
"explain": "天德地祥俱备,天地人和。财禄丰盈,富裕安稳,家势盛大,万宝朝宗之运。然而满极必损,盈极则亏。若其他要素配合不周者,恐或如流水而下,成为所谓乐极生悲之象。此数理为天赋之美,安稳吉庆终生。"
},
"zong_ge": {
"mean": "权贵显达的意外惠泽数。",
"description": "宝马金鞍",
"ji_xiong": "吉",
"explain": "侥幸多望之格,常得长上之庇护。若能得长辈提掖,其成功将势如破竹。且此数理者品性温良,大有爱护他人之德。家门隆昌繁荣,为至上的吉数,最适合女性用。"
}
}
},
"text": {
"copyright": "公共API https://qqlykm.cn"
}
}
错误码 | 类型 | 说明 |
---|---|---|
200 | int | 请求成功 |
400 | int | 参数传递不正确 |
500 | int | 获取数据失败等 |
<?php
/**
* API请求DEMO
*
* 本demo支持常见的HTTP请求方法(GET/POST/PUT/DELETE等)
*/
//基本配置
$api_key = '你的接口密钥,登录控制台后在密钥管理页面申请';
$secret_key = '';
// API请求示例:
try {
$client = new ApiClient($api_key, $secret_key);
$client->setTimeout(10);
$client->setVerifySSL(false); // 关闭SSL验证
// GET请求示例
echo "=== 开始GET请求 ===\n";
$response = $client->get('https://qqlykm.cn/api/qiming/index', [
'key' => $api_key,
'key2' => '其他参数'
]);
print_r($response);
//print_r($client->getLastRequestInfo());
/*
// POST表单示例
echo "\n=== 开始POST请求 ===\n";
$response = $client->post('接口地址', [
'key' => $api_key,
'key2' => '其他参数'
]);
print_r($response);
print_r($client->getLastRequestInfo());
// POST JSON示例
echo "\n=== 开始POST JSON请求 ===\n";
$response = $client->postJson('接口地址', [
'key' => $api_key,
'key2' => '其他参数'
]);
print_r($response);
print_r($client->getLastRequestInfo());
*/
} catch (ApiClientException $e) {
echo "API请求错误: " . $e->getMessage();
if ($e->getCode() > 0) {
echo " (HTTP状态码: " . $e->getCode() . ")";
}
print_r($client->getLastRequestInfo() ?? []);
}
/**
* API客户端类
*
* 提供了一个简单的HTTP API客户端实现,支持常见的HTTP请求方法(GET/POST/PUT/DELETE等)
* 具有以下主要功能:
* - 支持 API 密钥和签名认证
* - 可配置请求超时和SSL验证
* - 支持自定义请求头
* - 支持表单和JSON格式的请求体
* - 自动解析响应结果
* - 提供详细的请求信息记录
*
* 使用示例:
* ```
* $client = new ApiClient('https://api.example.com', 'api_key', 'secret_key');
* $response = $client->get('/users', ['page' => 1]);
* ```
*
* @throws ApiClientException 当API请求失败时抛出异常
*/
class ApiClient
{
private $apiKey;
private $secretKey;
private $timeout = 30;
private $verifySSL = true;
private $lastRequestInfo = [];
private $defaultHeaders = [];
/**
* 构造函数
*
* @param string $apiKey API密钥(可选)
* @param string $secretKey 签名密钥(可选)
*/
public function __construct(string $apiKey = '', string $secretKey = '')
{
$this->apiKey = $apiKey;
$this->secretKey = $secretKey;
}
/**
* 设置请求超时时间(秒)
*/
public function setTimeout(int $seconds): self
{
$this->timeout = $seconds;
return $this;
}
/**
* 设置是否验证SSL证书
*/
public function setVerifySSL(bool $verify): self
{
$this->verifySSL = $verify;
return $this;
}
/**
* 添加默认请求头
*/
public function addDefaultHeader(string $name, string $value): self
{
$this->defaultHeaders[$name] = $value;
return $this;
}
/**
* 发送GET请求
*
* @param string $endpoint 接口端点
* @param array $query 查询参数
* @param array $headers 额外请求头
*/
public function get(string $endpoint, array $query = [], array $headers = []): array
{
return $this->request('GET', $endpoint, [
'query' => $query,
'headers' => $headers
]);
}
/**
* 发送POST请求(表单格式)
*
* @param string $endpoint 接口端点
* @param array $data POST数据
* @param array $headers 额外请求头
*/
public function post(string $endpoint, array $data = [], array $headers = []): array
{
return $this->request('POST', $endpoint, [
'form_data' => $data,
'headers' => $headers
]);
}
/**
* 发送POST请求(JSON格式)
*
* @param string $endpoint 接口端点
* @param array $data POST数据
* @param array $headers 额外请求头
*/
public function postJson(string $endpoint, array $data = [], array $headers = []): array
{
return $this->request('POST', $endpoint, [
'json' => $data,
'headers' => array_merge(['Content-Type' => 'application/json'], $headers)
]);
}
/**
* 发送PUT请求
*/
public function put(string $endpoint, array $data = [], array $headers = []): array
{
return $this->request('PUT', $endpoint, [
'json' => $data,
'headers' => $headers
]);
}
/**
* 发送DELETE请求
*/
public function delete(string $endpoint, array $data = [], array $headers = []): array
{
return $this->request('DELETE', $endpoint, [
'json' => $data,
'headers' => $headers
]);
}
/**
* 获取最后一次请求的详细信息
*/
public function getLastRequestInfo(): array
{
return $this->lastRequestInfo;
}
/**
* 基础请求方法
*/
private function request(string $method, string $endpoint, array $options = []): array
{
// 初始化cURL
$ch = curl_init();
$url = ltrim($endpoint, '/');
// 准备请求头
$headers = $this->prepareHeaders($options['headers'] ?? []);
// 处理查询参数
if (!empty($options['query'])) {
$url .= '?' . http_build_query($options['query']);
}
// 处理请求体
$postData = null;
if (isset($options['form_data'])) {
$postData = http_build_query($options['form_data']);
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
} elseif (isset($options['json'])) {
$postData = json_encode($options['json']);
$headers[] = 'Content-Type: application/json';
}
// 设置cURL选项
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_TIMEOUT => $this->timeout,
CURLOPT_SSL_VERIFYPEER => $this->verifySSL,
CURLOPT_SSL_VERIFYHOST => $this->verifySSL,
CURLOPT_HEADER => true,
]);
if ($method !== 'GET' && $postData !== null) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
}
// 执行请求
$response = curl_exec($ch);
$error = curl_error($ch);
$info = $this->lastRequestInfo = curl_getinfo($ch);
curl_close($ch);
// 处理错误
if ($error) {
throw new ApiClientException("cURL请求失败: " . $error);
}
// 分离响应头和响应体
$headerSize = $info['header_size'];
$responseHeaders = substr($response, 0, $headerSize);
$responseBody = substr($response, $headerSize);
// 解析响应
$result = json_decode($responseBody, true) ?? $responseBody;
// 检查HTTP状态码
if ($info['http_code'] >= 400) {
$errorMsg = is_array($result) ? ($result['message'] ?? $responseBody) : $responseBody;
throw new ApiClientException("API请求失败: " . $errorMsg, $info['http_code']);
}
return [
'status' => $info['http_code'],
'headers' => $this->parseHeaders($responseHeaders),
'data' => $result
];
}
/**
* 准备请求头(自动添加签名)
*/
private function prepareHeaders(array $headers): array
{
// 合并默认头
$headers = array_merge($this->defaultHeaders, $headers);
// 添加签名头
if ($this->apiKey && $this->secretKey) {
$timestamp = time();
$signString = "key={$this->apiKey}×tamp={$timestamp}";
$signature = hash_hmac('sha256', $signString, $this->secretKey);
$headers['X-Api-Key'] = $this->apiKey;
$headers['X-Api-Timestamp'] = $timestamp;
$headers['X-Api-Sign'] = $signature;
}
// 转换为cURL格式
$curlHeaders = [];
foreach ($headers as $name => $value) {
$curlHeaders[] = "$name: $value";
}
return $curlHeaders;
}
/**
* 解析响应头
*/
private function parseHeaders(string $headers): array
{
$parsed = [];
foreach (explode("\r\n", $headers) as $i => $line) {
if ($i === 0) {
$parsed['HTTP_CODE'] = $line;
} else {
$parts = explode(': ', $line, 2);
if (count($parts) === 2) {
$parsed[$parts[0]] = $parts[1];
}
}
}
return $parsed;
}
}
class ApiClientException extends \Exception
{
// 自定义异常类
}
//jQuery-Ajax
$.ajax({
url: 'https://qqlykm.cn/api/qiming/index',
data: {
//接口参数,一行一个,可按照接口文档-请求参数 的参数填写,或者直接复制开发工具下面的测试代码。
key: '你的接口密钥,登录控制台后在密钥管理页面申请',
参数名: '参数值',
},
type: 'GET', //请求协议(GET或POST),一般默认GET,部分接口需要POST请求,根据实际情况修改为POST即可。
dataType: 'json',
success: function(data) {
console.log(data); //请求成功,输出结果到控制台
},
timeout: 3000, //超时时间
error: function(data) {
console.log('请求失败'); //失败处理
}
});
子程序名 | 返回值类型 | 公开 | 备 注 | ||
__启动窗口_创建完毕 |
子程序名 | 返回值类型 | 公开 | 备 注 | ||
Send_API |
变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
REQU_Data | 文本型 | 提交字符串 | ||||
return | 文本型 | 返回字符串 | ||||
API_URL | 文本型 | 接口地址 | ||||
API_KEY | 文本型 | 接口密钥 |
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Test {
public static void main(String[] args) {
try {
URL url = new URL("https://qqlykm.cn/api/qiming/index?key=你的接口密钥,登录控制台后在密钥管理页面申请");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
// 设置请求方式
connection.setRequestMethod("GET");
connection.connect();
// 获取响应码
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
// 读取到的内容给line变量
System.out.println(line);
}
reader.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
// 发起一个GET请求
resp, err := http.Get("https://qqlykm.cn/api/qiming/index?key=你的接口密钥,登录控制台后在密钥管理页面申请")
if err != nil {
fmt.Println("http get error", err)
return
}
// 读取响应结果
result, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("http read error", err)
return
}
// 关闭响应结果
defer resp.Body.Close()
fmt.Println(string(result))
}
```
# 导入requests库
import requests
# 设置url
url = 'https://qqlykm.cn/api/qiming/index?key=你的接口密钥,登录控制台后在密钥管理页面申请'
# 发送post请求
response = requests.post(url, data={'key1': 'value1', 'key2': 'value2'})
# 获取响应内容
result = response.json()
# 打印结果
print(result)
```
// 以下是使用Node.js进行GET和POST请求API接口的示例代码:
const https = require('https');
const querystring = require('querystring');
// 定义请求选项
const options = {
hostname: 'qqlykm.cn',
path: '/api/qiming/index',
method: 'GET'
};
// 发送GET请求
https.get(options, res => {
console.log(`statusCode: ${res.statusCode}`);
res.on('data', d => {
process.stdout.write(d);
});
}).on('error', error => {
console.error(error);
});
// 发送POST请求
const postData = querystring.stringify({
'key1': 'value1',
'key2': 'value2'
});
const postOptions = {
hostname: 'qqlykm.cn',
path: '/api/qiming/index',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(postData)
}
};
const postReq = https.request(postOptions, res => {
console.log(`statusCode: ${res.statusCode}`);
res.on('data', d => {
process.stdout.write(d);
});
});
postReq.on('error', error => {
console.error(error);
});
postReq.write(postData);
postReq.end();
/*
这个示例代码使用Node.js内置的`https`模块进行HTTP请求。
首先定义了一个GET请求的选项,然后使用`https.get()`方法发送了GET请求。在响应流上注册回调函数,以便在收到响应数据时将其输出到控制台。在出现错误时,也注册了错误处理程序。
类似地,我们也定义了一个POST请求选项,并使用`https.request()`方法发送它。需要在请求头中包含适当的`Content-Type`和`Content-Length`以确保服务器可以正确解析请求体。请求体由`write()`方法写入,并在请求结束时通过调用`end()`方法通知请求对象已经完成。
注意,此示例默认使用`querystring`模块将数据作为x-www-form-urlencoded格式进行编码。如果需要使用其他格式(如JSON),则需要相应地更改请求头和请求体的编码方式。
另外,为了确保HTTPS请求的安全性,您也可以添加其他选项,例如验证服务器证书、设置代理等。
*/
以下是使用C语言进行GET和POST请求API接口的示例代码:
``` c
#include
#include
#include
#include // 需要安装curl库
// API地址
const char* url = "https://qqlykm.cn/api/qiming/index";
// GET请求
void getRequest(CURL* curl) {
CURLcode res;
// 设置URL
curl_easy_setopt(curl, CURLOPT_URL, url);
// 执行请求
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
}
// POST请求
void postRequest(CURL* curl) {
CURLcode res;
// 设置URL
curl_easy_setopt(curl, CURLOPT_URL, url);
// 设置POST数据
const char* postData = "key=你的接口密钥,登录控制台后在密钥管理页面申请&key1=value1";
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postData);
// 执行请求
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
}
int main() {
CURL* curl;
CURLcode res;
// 初始化curl
curl = curl_easy_init();
if(curl) {
// 设置SSL验证
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
// GET请求
getRequest(curl);
// POST请求
postRequest(curl);
// 清理curl资源
curl_easy_cleanup(curl);
}
return 0;
}
```
这个示例代码使用了libcurl库进行HTTP请求。
首先,需要设置API地址。然后,基于`CURL`结构体创建curl句柄,并使用`curl_easy_setopt()`函数设置选项。这里设置了SSL验证,以确保请求的安全性。
在GET请求中,只需将URL设置为选项,然后调用`curl_easy_perform()`函数执行请求即可。
在POST请求中,还需要将POST数据作为字符串传递给`CURLOPT_POSTFIELDS`选项。
需要注意的是,为了避免内存泄漏,应该在使用完curl句柄之后调用`curl_easy_cleanup()`函数进行清理。
除了上述示例代码外,libcurl库还提供了更多高级选项,例如处理HTTP头、上传文件等。可以参考文档进行更详细的了解。
以下是一个使用C++请求API接口的示例代码:
```cpp
#include
#include
int main() {
CURL *curl;
CURLcode res;
std::string url = "https://qqlykm.cn/api/qiming/index?key=你的接口密钥,登录控制台后在密钥管理页面申请";
std::string response;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, [](char *ptr, size_t size, size_t nmemb, void *userdata) -> size_t {
std::string *response = reinterpret_cast(userdata);
response->append(ptr, size * nmemb);
return size * nmemb;
});
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
res = curl_easy_perform(curl);
if (res == CURLE_OK) {
std::cout << "Response: " << response << std::endl;
} else {
std::cerr << "Error: " << curl_easy_strerror(res) << std::endl;
}
curl_easy_cleanup(curl);
}
return 0;
}
```
解释:
1. 引入需要的头文件:``用于输出结果,``用于使用libcurl库。
2. 定义需要请求的API接口的URL和存储响应数据的字符串变量。
3. 初始化一个CURL对象。
4. 设置CURL对象的参数:请求的URL(`CURLOPT_URL`)、是否跟随重定向(`CURLOPT_FOLLOWLOCATION`)、响应数据的写入函数(`CURLOPT_WRITEFUNCTION`)和响应数据的写入位置(`CURLOPT_WRITEDATA`)。
5. 发送HTTP请求并获取响应数据,判断返回状态码是否OK。
6. 清理CURL对象。
运行该程序会发送GET请求到指定的API接口URL,并在程序终止前将响应数据输出到终端。注意,在使用该示例代码之前需要安装libcurl库。
以下是一个使用C#请求API接口的示例代码:
```csharp
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main(string[] args) {
HttpClient client = new HttpClient();
string url = "https://qqlykm.cn/api/qiming/index?key=你的接口密钥,登录控制台后在密钥管理页面申请";
HttpResponseMessage response = await client.GetAsync(url);
if (response.IsSuccessStatusCode) {
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine("Response: " + responseBody);
} else {
Console.WriteLine("Error: " + response.StatusCode);
}
}
}
```
解释:
1. 引用需要的命名空间:`System.Net.Http`用于使用HttpClient类,`System.Threading.Tasks`用于异步执行请求操作。
2. 创建一个HttpClient对象。
3. 定义需要请求的API接口的URL。
4. 发送GET请求到指定的API接口URL,并获取响应结果。
5. 判断响应状态是否成功,如果成功则读取响应数据(使用ReadAsStringAsync方法),否则输出错误信息(使用StatusCode属性)。
运行该程序会发送GET请求到指定的API接口URL,并在程序终止前将响应数据输出到终端。注意,在使用该示例代码之前需要安装.NET Framework或.NET Core SDK。
以下是VB请求API接口的示例代码:
```
' 1. 引入Microsoft XML v6.0库
' 2. 创建一个XMLHTTP对象
Dim xhr As XMLHTTP
Set xhr = New XMLHTTP
' 3. 设置请求的URL、方法,以及是否异步等
xhr.Open "GET", "https://qqlykm.cn/api/qiming/index?key=你的接口密钥,登录控制台后在密钥管理页面申请", False
' 4. 发送请求
xhr.send
' 5. 获取响应结果
Dim responseText As String
responseText = xhr.responseText
' 6. 输出响应结果
Debug.Print responseText
' 7. 释放资源
Set xhr = Nothing
```
在这个示例中,我们创建了一个XMLHTTP对象,用于请求API接口。我们先调用`open`方法来设置请求的URL、方法,以及是否异步。然后,我们发送请求,并使用`responseText`属性来获取响应结果。最后,我们将响应结果打印到控制台,完成操作后释放资源,以防止内存泄漏。请注意,以上示例代码为同步请求,如果想使用异步请求,需要设置第三个参数为`True`,并在请求结束时处理`OnReadyStateChange`事件。
参数名 | 填写参数值 |
---|---|
请 登录 后发表评论
填写业务相关参数免费在线调试
生成符合你的开发语言代码,复制即可
调整你后端部分逻辑代码即可上线使用