文档中心

基于OpenAPI规范的标准化技术文档枢纽,提供版本化、交互式、机器可读的API全生命周期管理解决方案。

语音合成

服务正常 按量计费 音频模型 2026-03-05 167 次

语音合成 API 接口,文本一键转高保真真人语音,支持40种国家语言,自动判断文字语言进行合成

调用权限
正常
请求频率限制
100次/秒 (100 QPS)
免费额度
参考价格
0.0006元/字符

计费优先级(按已开通的计费类型依次校验):

vip专属->单独包月->次数包->点数计费->账户余额->免费额度

按量计费:

该产品支持点数余额抵扣,计费单价:0.06 点/字符 取整,不满1点按1点计费 按字符计费

账户余额:

该产品支持账户余额抵扣,计费单价:0.0006 元/字符; 按字符计费

请求限制:

免费/测试用户请求频率限制 请求频率总限制 每日请求次数总限制
0秒0次 每个免费用户的QPS总限制 1秒100次 每个用户QPS总限制 10000000 (次) 每个用户每日请求总次数

其他准入要求:

  • 账户余额/点数计费的用户,不限制每日请求次数和QPS
  • 次数包计费的用户,不限制每日请求次数和QPS
  • 接口地址: https://api.wuyinkeji.com/api/async/audio_tts

    返回格式: application/json

    请求方式: HTTPPOST

    请求示例: https://api.wuyinkeji.com/api/async/audio_tts?key=你的密钥

    请求HEADER:

    名称
    Authorization接口密钥,在控制台->密钥管理查看

    请求参数说明:

    名称必填类型示例值说明
    textstring

    待合成的文本

    voice_idstring

    音色ID 系统音色在文档下方

    speedstring1范围[0.5,2],默认值为1.0,生成声音的语速,可选,取值越大,语速越快。
    volstring1范围(0,10],默认值为1.0
    生成声音的音量,可选,取值越大,音量越高。
    language_booststring

    语种 默认auto

    增强对指定的小语种和方言的识别能力,设置后可以提升在指定小语种/方言场景下的语音表现。如果不明确小语种类型,则可以选择"auto",模型将自主判断小语种类型。支持以下取值:
    'Chinese', 'Chinese,Yue', 'English', 'Arabic', 'Russian', 'Spanish', 'French', 'Portuguese', 'German', 'Turkish', 'Dutch', 'Ukrainian', 'Vietnamese', 'Indonesian', 'Japanese', 'Italian', 'Korean', 'auto'

    返回参数说明:


    名称类型说明
    codeint状态码
    msgstring状态信息
    datastring请求结果数据集
    data.idstring请求结果id
    exec_timefloat执行耗时
    user_ipstring客户端IP


    系统音色

    序号       语言           音色ID (Voice ID)     音色名称 (Voice Name)

    1    中文 (普通话)    male-qn-qingse    青涩青年音色    

    2    中文 (普通话)    male-qn-jingying    精英青年音色    

    3    中文 (普通话)    male-qn-badao    霸道青年音色    

    4    中文 (普通话)    male-qn-daxuesheng    青年大学生音色    

    5    中文 (普通话)    female-shaonv    少女音色    

    6    中文 (普通话)    female-yujie    御姐音色    

    7    中文 (普通话)    female-chengshu    成熟女性音色    

    8    中文 (普通话)    female-tianmei    甜美女性音色    

    9    中文 (普通话)    male-qn-qingse-jingpin    青涩青年音色-beta    

    10    中文 (普通话)    male-qn-jingying-jingpin    精英青年音色-beta    

    11    中文 (普通话)    male-qn-badao-jingpin    霸道青年音色-beta    

    12    中文 (普通话)    male-qn-daxuesheng-jingpin    青年大学生音色-beta    

    13    中文 (普通话)    female-shaonv-jingpin    少女音色-beta    

    14    中文 (普通话)    female-yujie-jingpin    御姐音色-beta    

    15    中文 (普通话)    female-chengshu-jingpin    成熟女性音色-beta    

    16    中文 (普通话)    female-tianmei-jingpin    甜美女性音色-beta    

    17    中文 (普通话)    clever_boy    聪明男童    

    18    中文 (普通话)    cute_boy    可爱男童    

    19    中文 (普通话)    lovely_girl    萌萌女童    

    20    中文 (普通话)    cartoon_pig    卡通猪小琪    

    21    中文 (普通话)    bingjiao_didi    病娇弟弟    

    22    中文 (普通话)    junlang_nanyou    俊朗男友    

    23    中文 (普通话)    chunzhen_xuedi    纯真学弟    

    24    中文 (普通话)    lengdan_xiongzhang    冷淡学长    

    25    中文 (普通话)    badao_shaoye    霸道少爷    

    26    中文 (普通话)    tianxin_xiaoling    甜心小玲    

    27    中文 (普通话)    qiaopi_mengmei    俏皮萌妹    

    28    中文 (普通话)    wumei_yujie    妩媚御姐    

    29    中文 (普通话)    diadia_xuemei    嗲嗲学妹    

    30    中文 (普通话)    danya_xuejie    淡雅学姐    

    31    中文 (普通话)    Chinese (Mandarin)_Reliable_Executive    沉稳高管    

    32    中文 (普通话)    Chinese (Mandarin)_News_Anchor    新闻女声    

    33    中文 (普通话)    Chinese (Mandarin)_Mature_Woman    傲娇御姐    

    34    中文 (普通话)    Chinese (Mandarin)_Unrestrained_Young_Man    不羁青年    

    35    中文 (普通话)    Arrogant_Miss    嚣张小姐    

    36    中文 (普通话)    Robot_Armor    机械战甲    

    37    中文 (普通话)    Chinese (Mandarin)_Kind-hearted_Antie    热心大婶    

    38    中文 (普通话)    Chinese (Mandarin)_HK_Flight_Attendant    港普空姐    

    39    中文 (普通话)    Chinese (Mandarin)_Humorous_Elder    搞笑大爷    

    40    中文 (普通话)    Chinese (Mandarin)_Gentleman    温润男声    

    41    中文 (普通话)    Chinese (Mandarin)_Warm_Bestie    温暖闺蜜    

    42    中文 (普通话)    Chinese (Mandarin)_Male_Announcer    播报男声    

    43    中文 (普通话)    Chinese (Mandarin)_Sweet_Lady    甜美女声    

    44    中文 (普通话)    Chinese (Mandarin)_Southern_Young_Man    南方小哥    

    45    中文 (普通话)    Chinese (Mandarin)_Wise_Women    阅历姐姐    

    46    中文 (普通话)    Chinese (Mandarin)_Gentle_Youth    温润青年    

    47    中文 (普通话)    Chinese (Mandarin)_Warm_Girl    温暖少女    

    48    中文 (普通话)    Chinese (Mandarin)_Kind-hearted_Elder    花甲奶奶    

    49    中文 (普通话)    Chinese (Mandarin)_Cute_Spirit    憨憨萌兽    

    50    中文 (普通话)    Chinese (Mandarin)_Radio_Host    电台男主播    

    51    中文 (普通话)    Chinese (Mandarin)_Lyrical_Voice    抒情男声    

    52    中文 (普通话)    Chinese (Mandarin)_Straightforward_Boy    率真弟弟    

    53    中文 (普通话)    Chinese (Mandarin)_Sincere_Adult    真诚青年    

    54    中文 (普通话)    Chinese (Mandarin)_Gentle_Senior    温柔学姐    

    55    中文 (普通话)    Chinese (Mandarin)_Stubborn_Friend    嘴硬竹马    

    56    中文 (普通话)    Chinese (Mandarin)_Crisp_Girl    清脆少女    

    57    中文 (普通话)    Chinese (Mandarin)_Pure-hearted_Boy    清澈邻家弟弟    

    58    中文 (普通话)    Chinese (Mandarin)_Soft_Girl    柔和少女    

    59    中文 (粤语)    Cantonese_ProfessionalHost(F)    专业女主持    

    60    中文 (粤语)    Cantonese_GentleLady    温柔女声    

    61    中文 (粤语)    Cantonese_ProfessionalHost(M)    专业男主持    

    62    中文 (粤语)    Cantonese_PlayfulMan    活泼男声    

    63    中文 (粤语)    Cantonese_CuteGirl    可爱女孩    

    64    中文 (粤语)    Cantonese_KindWoman    善良女声    

    65    英文    Santa_Claus    Santa Claus    

    66    英文    Grinch    Grinch    

    67    英文    Rudolph    Rudolph    

    68    英文    Arnold    Arnold    

    69    英文    Charming_Santa    Charming Santa    

    70    英文    Charming_Lady    Charming Lady    

    71    英文    Sweet_Girl    Sweet Girl    

    72    英文    Cute_Elf    Cute Elf    

    73    英文    Attractive_Girl    Attractive Girl    

    74    英文    Serene_Woman    Serene Woman    

    75    英文    English_Trustworthy_Man    Trustworthy Man    

    76    英文    English_Graceful_Lady    Graceful Lady    

    77    英文    English_Aussie_Bloke    Aussie Bloke    

    78    英文    English_Whispering_girl    Whispering girl    

    79    英文    English_Diligent_Man    Diligent Man    

    80    英文    English_Gentle-voiced_man    Gentle-voiced man    

    81    日文    Japanese_IntellectualSenior    Intellectual Senior    

    82    日文    Japanese_DecisivePrincess    Decisive Princess    

    83    日文    Japanese_LoyalKnight    Loyal Knight    

    84    日文    Japanese_DominantMan    Dominant Man    

    85    日文    Japanese_SeriousCommander    Serious Commander    

    86    日文    Japanese_ColdQueen    Cold Queen    

    87    日文    Japanese_DependableWoman    Dependable Woman    

    88    日文    Japanese_GentleButler    Gentle Butler    

    89    日文    Japanese_KindLady    Kind Lady    

    90    日文    Japanese_CalmLady    Calm Lady    

    91    日文    Japanese_OptimisticYouth    Optimistic Youth    

    92    日文    Japanese_GenerousIzakayaOwner    Generous Izakaya Owner    

    93    日文    Japanese_SportyStudent    Sporty Student    

    94    日文    Japanese_InnocentBoy    Innocent Boy    

    95    日文    Japanese_GracefulMaiden    Graceful Maiden    

    96    韩文    Korean_SweetGirl    Sweet Girl    

    97    韩文    Korean_CheerfulBoyfriend    Cheerful Boyfriend    

    98    韩文    Korean_EnchantingSister    Enchanting Sister    

    99    韩文    Korean_ShyGirl    Shy Girl    

    100    韩文    Korean_ReliableSister    Reliable Sister    

    101    韩文    Korean_StrictBoss    Strict Boss    

    102    韩文    Korean_SassyGirl    Sassy Girl    

    103    韩文    Korean_ChildhoodFriendGirl    Childhood Friend Girl    

    104    韩文    Korean_PlayboyCharmer    Playboy Charmer    

    105    韩文    Korean_ElegantPrincess    Elegant Princess    

    106    韩文    Korean_BraveFemaleWarrior    Brave Female Warrior    

    107    韩文    Korean_BraveYouth    Brave Youth    

    108    韩文    Korean_CalmLady    Calm Lady    

    109    韩文    Korean_EnthusiasticTeen    Enthusiastic Teen    

    110    韩文    Korean_SoothingLady    Soothing Lady    

    111    韩文    Korean_IntellectualSenior    Intellectual Senior    

    112    韩文    Korean_LonelyWarrior    Lonely Warrior    

    113    韩文    Korean_MatureLady    Mature Lady    

    114    韩文    Korean_InnocentBoy    Innocent Boy    

    115    韩文    Korean_CharmingSister    Charming Sister    

    116    韩文    Korean_AthleticStudent    Athletic Student    

    117    韩文    Korean_BraveAdventurer    Brave Adventurer    

    118    韩文    Korean_CalmGentleman    Calm Gentleman    

    119    韩文    Korean_WiseElf    Wise Elf    

    120    韩文    Korean_CheerfulCoolJunior    Cheerful Cool Junior    

    121    韩文    Korean_DecisiveQueen    Decisive Queen    

    122    韩文    Korean_ColdYoungMan    Cold Young Man    

    123    韩文    Korean_MysteriousGirl    Mysterious Girl    

    124    韩文    Korean_QuirkyGirl    Quirky Girl    

    125    韩文    Korean_ConsiderateSenior    Considerate Senior    

    126    韩文    Korean_CheerfulLittleSister    Cheerful Little Sister    

    127    韩文    Korean_DominantMan    Dominant Man    

    128    韩文    Korean_AirheadedGirl    Airheaded Girl    

    129    韩文    Korean_ReliableYouth    Reliable Youth    

    130    韩文    Korean_FriendlyBigSister    Friendly Big Sister    

    131    韩文    Korean_GentleBoss    Gentle Boss    

    132    韩文    Korean_ColdGirl    Cold Girl    

    133    韩文    Korean_HaughtyLady    Haughty Lady    

    134    韩文    Korean_CharmingElderSister    Charming Elder Sister    

    135    韩文    Korean_IntellectualMan    Intellectual Man    

    136    韩文    Korean_CaringWoman    Caring Woman    

    137    韩文    Korean_WiseTeacher    Wise Teacher    

    138    韩文    Korean_ConfidentBoss    Confident Boss    

    139    韩文    Korean_AthleticGirl    Athletic Girl    

    140    韩文    Korean_PossessiveMan    Possessive Man    

    141    韩文    Korean_GentleWoman    Gentle Woman    

    142    韩文    Korean_CockyGuy    Cocky Guy    

    143    韩文    Korean_ThoughtfulWoman    Thoughtful Woman    

    144    韩文    Korean_OptimisticYouth    Optimistic Youth    

    145    西班牙文    Spanish_SereneWoman    Serene Woman    

    146    西班牙文    Spanish_MaturePartner    Mature Partner    

    147    西班牙文    Spanish_CaptivatingStoryteller    Captivating Storyteller    

    148    西班牙文    Spanish_Narrator    Narrator    

    149    西班牙文    Spanish_WiseScholar    Wise Scholar    

    150    西班牙文    Spanish_Kind-heartedGirl    Kind-hearted Girl    

    151    西班牙文    Spanish_DeterminedManager    Determined Manager    

    152    西班牙文    Spanish_BossyLeader    Bossy Leader    

    153    西班牙文    Spanish_ReservedYoungMan    Reserved Young Man    

    154    西班牙文    Spanish_ConfidentWoman    Confident Woman    

    155    西班牙文    Spanish_ThoughtfulMan    Thoughtful Man    

    156    西班牙文    Spanish_Strong-WilledBoy    Strong-willed Boy    

    157    西班牙文    Spanish_SophisticatedLady    Sophisticated Lady    

    158    西班牙文    Spanish_RationalMan    Rational Man    

    159    西班牙文    Spanish_AnimeCharacter    Anime Character    

    160    西班牙文    Spanish_Deep-tonedMan    Deep-toned Man    

    161    西班牙文    Spanish_Fussyhostess    Fussy hostess    

    162    西班牙文    Spanish_SincereTeen    Sincere Teen    

    163    西班牙文    Spanish_FrankLady    Frank Lady    

    164    西班牙文    Spanish_Comedian    Comedian    

    165    西班牙文    Spanish_Debator    Debator    

    166    西班牙文    Spanish_ToughBoss    Tough Boss    

    167    西班牙文    Spanish_Wiselady    Wise Lady    

    168    西班牙文    Spanish_Steadymentor    Steady Mentor    

    169    西班牙文    Spanish_Jovialman    Jovial Man    

    170    西班牙文    Spanish_SantaClaus    Santa Claus    

    171    西班牙文    Spanish_Rudolph    Rudolph    

    172    西班牙文    Spanish_Intonategirl    Intonate Girl    

    173    西班牙文    Spanish_Arnold    Arnold    

    174    西班牙文    Spanish_Ghost    Ghost    

    175    西班牙文    Spanish_HumorousElder    Humorous Elder    

    176    西班牙文    Spanish_EnergeticBoy    Energetic Boy    

    177    西班牙文    Spanish_WhimsicalGirl    Whimsical Girl    

    178    西班牙文    Spanish_StrictBoss    Strict Boss    

    179    西班牙文    Spanish_ReliableMan    Reliable Man    

    180    西班牙文    Spanish_SereneElder    Serene Elder    

    181    西班牙文    Spanish_AngryMan    Angry Man    

    182    西班牙文    Spanish_AssertiveQueen    Assertive Queen    

    183    西班牙文    Spanish_CaringGirlfriend    Caring Girlfriend    

    184    西班牙文    Spanish_PowerfulSoldier    Powerful Soldier    

    185    西班牙文    Spanish_PassionateWarrior    Passionate Warrior    

    186    西班牙文    Spanish_ChattyGirl    Chatty Girl    

    187    西班牙文    Spanish_RomanticHusband    Romantic Husband    

    188    西班牙文    Spanish_CompellingGirl    Compelling Girl    

    189    西班牙文    Spanish_PowerfulVeteran    Powerful Veteran    

    190    西班牙文    Spanish_SensibleManager    Sensible Manager    

    191    西班牙文    Spanish_ThoughtfulLady    Thoughtful Lady    

    192    葡萄牙文    Portuguese_SentimentalLady    Sentimental Lady    

    193    葡萄牙文    Portuguese_BossyLeader    Bossy Leader    

    194    葡萄牙文    Portuguese_Wiselady    Wise lady    

    195    葡萄牙文    Portuguese_Strong-WilledBoy    Strong-willed Boy    

    196    葡萄牙文    Portuguese_Deep-VoicedGentleman    Deep-voiced Gentleman    

    197    葡萄牙文    Portuguese_UpsetGirl    Upset Girl    

    198    葡萄牙文    Portuguese_PassionateWarrior    Passionate Warrior    

    199    葡萄牙文    Portuguese_AnimeCharacter    Anime Character    

    200    葡萄牙文    Portuguese_ConfidentWoman    Confident Woman    

    201    葡萄牙文    Portuguese_AngryMan    Angry Man    

    202    葡萄牙文    Portuguese_CaptivatingStoryteller    Captivating Storyteller    

    203    葡萄牙文    Portuguese_Godfather    Godfather    

    204    葡萄牙文    Portuguese_ReservedYoungMan    Reserved Young Man    

    205    葡萄牙文    Portuguese_SmartYoungGirl    Smart Young Girl    

    206    葡萄牙文    Portuguese_Kind-heartedGirl    Kind-hearted Girl    

    207    葡萄牙文    Portuguese_Pompouslady    Pompous lady    

    208    葡萄牙文    Portuguese_Grinch    Grinch    

    209    葡萄牙文    Portuguese_Debator    Debator    

    210    葡萄牙文    Portuguese_SweetGirl    Sweet Girl    

    211    葡萄牙文    Portuguese_AttractiveGirl    Attractive Girl    

    212    葡萄牙文    Portuguese_ThoughtfulMan    Thoughtful Man    

    213    葡萄牙文    Portuguese_PlayfulGirl    Playful Girl    

    214    葡萄牙文    Portuguese_GorgeousLady    Gorgeous Lady    

    215    葡萄牙文    Portuguese_LovelyLady    Lovely Lady    

    216    葡萄牙文    Portuguese_SereneWoman    Serene Woman    

    217    葡萄牙文    Portuguese_SadTeen    Sad Teen    

    218    葡萄牙文    Portuguese_MaturePartner    Mature Partner    

    219    葡萄牙文    Portuguese_Comedian    Comedian    

    220    葡萄牙文    Portuguese_NaughtySchoolgirl    Naughty Schoolgirl    

    221    葡萄牙文    Portuguese_Narrator    Narrator    

    222    葡萄牙文    Portuguese_ToughBoss    Tough Boss    

    223    葡萄牙文    Portuguese_Fussyhostess    Fussy hostess    

    224    葡萄牙文    Portuguese_Dramatist    Dramatist    

    225    葡萄牙文    Portuguese_Steadymentor    Steady Mentor    

    226    葡萄牙文    Portuguese_Jovialman    Jovial Man    

    227    葡萄牙文    Portuguese_CharmingQueen    Charming Queen    

    228    葡萄牙文    Portuguese_SantaClaus    Santa Claus    

    229    葡萄牙文    Portuguese_Rudolph    Rudolph    

    230    葡萄牙文    Portuguese_Arnold    Arnold    

    231    葡萄牙文    Portuguese_CharmingSanta    Charming Santa    

    232    葡萄牙文    Portuguese_CharmingLady    Charming Lady    

    233    葡萄牙文    Portuguese_Ghost    Ghost    

    234    葡萄牙文    Portuguese_HumorousElder    Humorous Elder    

    235    葡萄牙文    Portuguese_CalmLeader    Calm Leader    

    236    葡萄牙文    Portuguese_GentleTeacher    Gentle Teacher    

    237    葡萄牙文    Portuguese_EnergeticBoy    Energetic Boy    

    238    葡萄牙文    Portuguese_ReliableMan    Reliable Man    

    239    葡萄牙文    Portuguese_SereneElder    Serene Elder    

    240    葡萄牙文    Portuguese_GrimReaper    Grim Reaper    

    241    葡萄牙文    Portuguese_AssertiveQueen    Assertive Queen    

    242    葡萄牙文    Portuguese_WhimsicalGirl    Whimsical Girl    

    243    葡萄牙文    Portuguese_StressedLady    Stressed Lady    

    244    葡萄牙文    Portuguese_FriendlyNeighbor    Friendly Neighbor    

    245    葡萄牙文    Portuguese_CaringGirlfriend    Caring Girlfriend    

    246    葡萄牙文    Portuguese_PowerfulSoldier    Powerful Soldier    

    247    葡萄牙文    Portuguese_FascinatingBoy    Fascinating Boy    

    248    葡萄牙文    Portuguese_RomanticHusband    Romantic Husband    

    249    葡萄牙文    Portuguese_StrictBoss    Strict Boss    

    250    葡萄牙文    Portuguese_InspiringLady    Inspiring Lady    

    251    葡萄牙文    Portuguese_PlayfulSpirit    Playful Spirit    

    252    葡萄牙文    Portuguese_ElegantGirl    Elegant Girl    

    253    葡萄牙文    Portuguese_CompellingGirl    Compelling Girl    

    254    葡萄牙文    Portuguese_PowerfulVeteran    Powerful Veteran    

    255    葡萄牙文    Portuguese_SensibleManager    Sensible Manager    

    256    葡萄牙文    Portuguese_ThoughtfulLady    Thoughtful Lady    

    257    葡萄牙文    Portuguese_TheatricalActor    Theatrical Actor    

    258    葡萄牙文    Portuguese_FragileBoy    Fragile Boy    

    259    葡萄牙文    Portuguese_ChattyGirl    Chatty Girl    

    260    葡萄牙文    Portuguese_Conscientiousinstructor    Conscientious Instructor    

    261    葡萄牙文    Portuguese_RationalMan    Rational Man    

    262    葡萄牙文    Portuguese_WiseScholar    Wise Scholar    

    263    葡萄牙文    Portuguese_FrankLady    Frank Lady    

    264    葡萄牙文    Portuguese_DeterminedManager    Determined Manager    

    265    法文    French_Male_Speech_New    Level-Headed Man    

    266    法文    French_Female_News Anchor    Patient Female Presenter    

    267    法文    French_CasualMan    Casual Man    

    268    法文    French_MovieLeadFemale    Movie Lead Female    

    269    法文    French_FemaleAnchor    Female Anchor    

    270    法文    French_MaleNarrator    Male Narrator    

    271    印尼文    Indonesian_SweetGirl    Sweet Girl    

    272    印尼文    Indonesian_ReservedYoungMan    Reserved Young Man    

    273    印尼文    Indonesian_CharmingGirl    Charming Girl    

    274    印尼文    Indonesian_CalmWoman    Calm Woman    

    275    印尼文    Indonesian_ConfidentWoman    Confident Woman    

    276    印尼文    Indonesian_CaringMan    Caring Man    

    277    印尼文    Indonesian_BossyLeader    Bossy Leader    

    278    印尼文    Indonesian_DeterminedBoy    Determined Boy    

    279    印尼文    Indonesian_GentleGirl    Gentle Girl    

    280    德文    German_FriendlyMan    Friendly Man    

    281    德文    German_SweetLady    Sweet Lady    

    282    德文    German_PlayfulMan    Playful Man    

    283    俄文    Russian_HandsomeChildhoodFriend    Handsome Childhood Friend    

    284    俄文    Russian_BrightHeroine    Bright Queen    

    285    俄文    Russian_AmbitiousWoman    Ambitious Woman    

    286    俄文    Russian_ReliableMan    Reliable Man    

    287    俄文    Russian_CrazyQueen    Crazy Girl    

    288    俄文    Russian_PessimisticGirl    Pessimistic Girl    

    289    俄文    Russian_AttractiveGuy    Attractive Guy    

    290    俄文    Russian_Bad-temperedBoy    Bad-tempered Boy    

    291    意大利文    Italian_BraveHeroine    Brave Heroine    

    292    意大利文    Italian_Narrator    Narrator    

    293    意大利文    Italian_WanderingSorcerer    Wandering Sorcerer    

    294    意大利文    Italian_DiligentLeader    Diligent Leader    

    295    阿拉伯文    Arabic_CalmWoman    Calm Woman    

    296    阿拉伯文    Arabic_FriendlyGuy    Friendly Guy    

    297    土耳其文    Turkish_CalmWoman    Calm Woman    

    298    土耳其文    Turkish_Trustworthyman    Trustworthy man    

    299    乌克兰文    Ukrainian_CalmWoman    Calm Woman    

    300    乌克兰文    Ukrainian_WiseScholar    Wise Scholar    

    301    荷兰文    Dutch_kindhearted_girl    Kind-hearted girl    

    302    荷兰文    Dutch_bossy_leader    Bossy leader    

    303    越南文    Vietnamese_kindhearted_girl    Kind-hearted girl    

    304    泰文    Thai_male_1_sample8    Serene Man    

    305    泰文    Thai_male_2_sample2    Friendly Man    

    306    泰文    Thai_female_1_sample1    Confident Woman    

    307    泰文    Thai_female_2_sample2    Energetic Woman    

    308    波兰文    Polish_male_1_sample4    Male Narrator    

    309    波兰文    Polish_male_2_sample3    Male Anchor    

    310    波兰文    Polish_female_1_sample1    Calm Woman    

    311    波兰文    Polish_female_2_sample3    Casual Woman    

    312    罗马尼亚文    Romanian_male_1_sample2    Reliable Man    

    313    罗马尼亚文    Romanian_male_2_sample1    Energetic Youth    

    314    罗马尼亚文    Romanian_female_1_sample4    Optimistic Youth    

    315    罗马尼亚文    Romanian_female_2_sample1    Gentle Woman    

    316    希腊文    greek_male_1a_v1    Thoughtful Mentor    

    317    希腊文    Greek_female_1_sample1    Gentle Lady    

    318    希腊文    Greek_female_2_sample3    Girl Next Door    

    319    捷克文    czech_male_1_v1    Assured Presenter    

    320    捷克文    czech_female_5_v7    Steadfast Narrator    

    321    捷克文    czech_female_2_v2    Elegant Lady    

    322    芬兰文    finnish_male_3_v1    Upbeat Man    

    323    芬兰文    finnish_male_1_v2    Friendly Boy    

    324    芬兰文    finnish_female_4_v1    Assetive Woman    

    325    印地文    hindi_male_1_v2    Trustworthy Advisor    

    326    印地文    hindi_female_2_v1    Tranquil Woman    

    327    印地文    hindi_female_1_v2    News Anchor    







    本示例代码演示了接口的基础调用流程,开发者需自行将代码中的默认值替换为实际的API接口认证信息。
    
    <?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://api.wuyinkeji.com/api/async/audio_tts', [
            '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}&timestamp={$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
    {
        // 自定义异常类
    }
    
    
    
    
    
    
    /**
     * 原生JS通用API请求函数(支持GET/POST,JSON格式)
     * @param {string} url - API接口完整地址
     * @param {string} method - 请求方法,仅支持GET/POST
     * @param {object} [data={}] - 请求参数(GET拼接到URL,POST作为JSON请求体)
     * @returns {Promise} - 返回接口响应的JSON数据
     */
    async function requestApi(url, method, data = {}) {
      try {
        // 处理GET请求:拼接参数到URL
        let requestUrl = url;
        if (method.toUpperCase() === 'GET' && Object.keys(data).length > 0) {
          const params = new URLSearchParams(data).toString();
          requestUrl = `${requestUrl}${requestUrl.includes('?') ? '&' : '?'}${params}`;
        }
    
        // 配置请求选项
        const requestOptions = {
          method: method.toUpperCase(),
          headers: { 'Content-Type': 'application/json' },
          credentials: 'include' // 跨域时携带Cookie,不需要可改为omit
        };
    
        // 处理POST请求:设置JSON请求体
        if (method.toUpperCase() === 'POST') {
          requestOptions.body = JSON.stringify(data);
        }
    
        // 发送请求并处理响应
        const response = await fetch(requestUrl, requestOptions);
        if (!response.ok) throw new Error(`请求失败:${response.status} ${response.statusText}`);
        const result = await response.json(); // 自动解析JSON响应
        return result;
    
      } catch (error) {
        console.error('API请求错误:', error.message);
        throw error; // 抛出错误供调用方处理
      }
    }
    
    // -------------------------- 使用示例 --------------------------
    // 1. GET请求示例(查询数据)
    async function testGet() {
      try {
        const data = await requestApi(
          'https://api.example.com/user/list', // 替换为实际接口地址
          'GET',
          { page: 1, size: 10, keyword: 'test' } // GET请求参数
        );
        console.log('GET请求成功:', data);
        // 业务逻辑处理...
      } catch (err) {
        alert('GET请求失败:' + err.message);
      }
    }
    
    // 2. POST请求示例(提交数据)
    async function testPost() {
      try {
        const data = await requestApi(
          'https://api.example.com/user/login', // 替换为实际接口地址
          'POST',
          { username: 'admin', password: '123456' } // POST请求体数据
        );
        console.log('POST请求成功:', data);
        // 业务逻辑处理...
      } catch (err) {
        alert('POST请求失败:' + err.message);
      }
    }
    
    // 执行请求(按需调用)
    // testGet();
    // testPost();
    
    
    import okhttp3.*;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.concurrent.TimeUnit;
    
    /**
     * Java 单文件实现GET/POST(JSON) API请求
     * 基于OkHttp和Jackson,复制后直接使用(需添加Maven/Gradle依赖)
     */
    public class ApiRequest {
        // 全局OkHttpClient实例(复用连接池)
        private static final OkHttpClient OK_HTTP_CLIENT = new OkHttpClient.Builder()
                .connectTimeout(10, TimeUnit.SECONDS)
                .readTimeout(10, TimeUnit.SECONDS)
                .writeTimeout(10, TimeUnit.SECONDS)
                .build();
    
        // Jackson JSON解析工具
        private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
    
        /**
         * GET请求方法
         * @param url 接口地址
         * @param params URL参数键值对
         * @return 接口响应字符串
         * @throws IOException 网络异常
         */
        public static String doGet(String url, Map params) throws IOException {
            HttpUrl.Builder urlBuilder = HttpUrl.parse(url).newBuilder();
            if (params != null && !params.isEmpty()) {
                for (Map.Entry entry : params.entrySet()) {
                    urlBuilder.addQueryParameter(entry.getKey(), entry.getValue());
                }
            }
            Request request = new Request.Builder().url(urlBuilder.build()).get().build();
            try (Response response = OK_HTTP_CLIENT.newCall(request).execute()) {
                if (!response.isSuccessful()) {
                    throw new IOException("GET请求失败:" + response.code() + " " + response.message());
                }
                return response.body() != null ? response.body().string() : "";
            }
        }
    
        /**
         * POST(JSON)请求方法
         * @param url 接口地址
         * @param jsonStr JSON请求体字符串
         * @return 接口响应字符串
         * @throws IOException 网络异常
         */
        public static String doPostJson(String url, String jsonStr) throws IOException {
            MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
            RequestBody requestBody = RequestBody.create(mediaType, jsonStr);
            Request request = new Request.Builder().url(url).post(requestBody).build();
            try (Response response = OK_HTTP_CLIENT.newCall(request).execute()) {
                if (!response.isSuccessful()) {
                    throw new IOException("POST请求失败:" + response.code() + " " + response.message());
                }
                return response.body() != null ? response.body().string() : "";
            }
        }
    
        /**
         * 格式化JSON字符串(便于阅读)
         * @param jsonStr 原始JSON字符串
         * @return 格式化后的JSON
         * @throws IOException 解析异常
         */
        public static String formatJson(String jsonStr) throws IOException {
            if (jsonStr == null || jsonStr.isEmpty()) {
                return "";
            }
            Object jsonObj = OBJECT_MAPPER.readValue(jsonStr, Object.class);
            return OBJECT_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(jsonObj);
        }
    
        // 主方法:测试GET/POST请求
        public static void main(String[] args) {
            try {
                // ------------------- 测试GET请求 -------------------
                String getUrl = "https://api.example.com/user/list"; // 替换为实际接口地址
                Map getParams = new HashMap<>();
                getParams.put("page", "1");
                getParams.put("size", "10");
                getParams.put("keyword", "test");
                String getResponse = doGet(getUrl, getParams);
                System.out.println("=== GET请求响应结果 ===");
                System.out.println(formatJson(getResponse));
    
                System.out.println("------------------------");
    
                // ------------------- 测试POST请求 -------------------
                String postUrl = "https://api.example.com/user/login"; // 替换为实际接口地址
                Map postData = new HashMap<>();
                postData.put("username", "admin");
                postData.put("password", "123456");
                String jsonStr = OBJECT_MAPPER.writeValueAsString(postData);
                String postResponse = doPostJson(postUrl, jsonStr);
                System.out.println("=== POST请求响应结果 ===");
                System.out.println(formatJson(postResponse));
    
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    
    package main
    
    import (
    	"bytes"
    	"encoding/json"
    	"fmt"
    	"io/ioutil"
    	"net/http"
    	"net/url"
    	"time"
    )
    
    // 全局HTTP客户端,设置超时时间
    var httpClient = &http.Client{
    	Timeout: 10 * time.Second, // 请求超时时间10秒
    }
    
    // DoGet 发送GET请求,自动拼接URL参数
    // urlStr: 接口地址
    // params: URL查询参数(键值对)
    // 返回:响应体字符串、错误信息
    func DoGet(urlStr string, params map[string]string) (string, error) {
    	// 解析基础URL
    	parsedUrl, err := url.Parse(urlStr)
    	if err != nil {
    		return "", fmt.Errorf("URL解析失败: %v", err)
    	}
    
    	// 拼接查询参数
    	query := parsedUrl.Query()
    	for key, value := range params {
    		query.Add(key, value)
    	}
    	parsedUrl.RawQuery = query.Encode()
    
    	// 发送GET请求
    	resp, err := httpClient.Get(parsedUrl.String())
    	if err != nil {
    		return "", fmt.Errorf("GET请求失败: %v", err)
    	}
    	defer resp.Body.Close() // 确保响应体关闭
    
    	// 检查响应状态码
    	if resp.StatusCode < 200 || resp.StatusCode >= 300 {
    		return "", fmt.Errorf("请求返回异常状态码: %d", resp.StatusCode)
    	}
    
    	// 读取响应体
    	body, err := ioutil.ReadAll(resp.Body)
    	if err != nil {
    		return "", fmt.Errorf("读取响应体失败: %v", err)
    	}
    
    	return string(body), nil
    }
    
    // DoPostJson 发送POST请求,JSON格式请求体
    // urlStr: 接口地址
    // data: 请求体数据(任意可序列化为JSON的结构体/Map)
    // 返回:响应体字符串、错误信息
    func DoPostJson(urlStr string, data interface{}) (string, error) {
    	// 将数据序列化为JSON字节流
    	jsonData, err := json.Marshal(data)
    	if err != nil {
    		return "", fmt.Errorf("JSON序列化失败: %v", err)
    	}
    
    	// 发送POST请求
    	resp, err := httpClient.Post(urlStr, "application/json", bytes.NewBuffer(jsonData))
    	if err != nil {
    		return "", fmt.Errorf("POST请求失败: %v", err)
    	}
    	defer resp.Body.Close()
    
    	// 检查响应状态码
    	if resp.StatusCode < 200 || resp.StatusCode >= 300 {
    		return "", fmt.Errorf("请求返回异常状态码: %d", resp.StatusCode)
    	}
    
    	// 读取响应体
    	body, err := ioutil.ReadAll(resp.Body)
    	if err != nil {
    		return "", fmt.Errorf("读取响应体失败: %v", err)
    	}
    
    	return string(body), nil
    }
    
    // FormatJson 格式化JSON字符串(便于控制台阅读)
    func FormatJson(jsonStr string) string {
    	var prettyJson bytes.Buffer
    	err := json.Indent(&prettyJson, []byte(jsonStr), "", "  ")
    	if err != nil {
    		return jsonStr // 格式化失败则返回原字符串
    	}
    	return prettyJson.String()
    }
    
    func main() {
    	// ------------------- 测试GET请求 -------------------
    	fmt.Println("=== 开始测试GET请求 ===")
    	getUrl := "https://api.example.com/user/list" // 替换为实际接口地址
    	getParams := map[string]string{
    		"page":    "1",
    		"size":    "10",
    		"keyword": "test",
    	}
    	getResp, err := DoGet(getUrl, getParams)
    	if err != nil {
    		fmt.Printf("GET请求出错: %v\n", err)
    	} else {
    		fmt.Println("GET请求响应结果:\n", FormatJson(getResp))
    	}
    
    	fmt.Println("------------------------")
    
    	// ------------------- 测试POST请求 -------------------
    	fmt.Println("=== 开始测试POST请求 ===")
    	postUrl := "https://api.example.com/user/login" // 替换为实际接口地址
    	// 定义POST请求体(可替换为自定义结构体)
    	postData := map[string]string{
    		"username": "admin",
    		"password": "123456",
    	}
    	postResp, err := DoPostJson(postUrl, postData)
    	if err != nil {
    		fmt.Printf("POST请求出错: %v\n", err)
    	} else {
    		fmt.Println("POST请求响应结果:\n", FormatJson(postResp))
    	}
    }
    
    
    import requests
    import json
    
    # 配置全局请求超时时间(单位:秒)
    TIMEOUT = 10
    
    def do_get(url: str, params: dict = None) -> str:
        """
        发送GET请求
        :param url: 接口地址
        :param params: URL查询参数(字典)
        :return: 响应体字符串(格式化后的JSON)
        :raises Exception: 请求失败时抛出异常
        """
        try:
            # 发送GET请求
            response = requests.get(url, params=params, timeout=TIMEOUT)
            # 检查响应状态码
            response.raise_for_status()
            # 返回格式化后的JSON字符串
            return json.dumps(response.json(), indent=2, ensure_ascii=False)
        except requests.exceptions.RequestException as e:
            raise Exception(f"GET请求失败: {str(e)}")
    
    def do_post_json(url: str, data: dict = None) -> str:
        """
        发送POST请求(JSON格式请求体)
        :param url: 接口地址
        :param data: JSON请求体(字典)
        :return: 响应体字符串(格式化后的JSON)
        :raises Exception: 请求失败时抛出异常
        """
        try:
            # 发送POST请求,自动设置Content-Type为application/json
            response = requests.post(url, json=data, timeout=TIMEOUT)
            # 检查响应状态码
            response.raise_for_status()
            # 返回格式化后的JSON字符串
            return json.dumps(response.json(), indent=2, ensure_ascii=False)
        except requests.exceptions.RequestException as e:
            raise Exception(f"POST请求失败: {str(e)}")
    
    if __name__ == "__main__":
        # ------------------- 测试GET请求 -------------------
        print("=== 开始测试GET请求 ===")
        get_url = "https://api.example.com/user/list"  # 替换为实际接口地址
        get_params = {
            "page": 1,
            "size": 10,
            "keyword": "test"
        }
        try:
            get_resp = do_get(get_url, get_params)
            print("GET请求响应结果:\n", get_resp)
        except Exception as e:
            print(e)
    
        print("-" * 40)
    
        # ------------------- 测试POST请求 -------------------
        print("=== 开始测试POST请求 ===")
        post_url = "https://api.example.com/user/login"  # 替换为实际接口地址
        post_data = {
            "username": "admin",
            "password": "123456"
        }
        try:
            post_resp = do_post_json(post_url, post_data)
            print("POST请求响应结果:\n", post_resp)
        except Exception as e:
            print(e)
    
    
    
    const http = require('http');
    const https = require('https');
    const querystring = require('querystring');
    
    /**
     * 通用请求函数(支持GET/POST,JSON格式)
     * @param {string} url - 接口完整地址
     * @param {string} method - GET/POST
     * @param {object} [data={}] - 请求参数(GET拼URL,POST为JSON体)
     * @returns {Promise} - 响应JSON数据
     */
    function requestApi(url, method, data = {}) {
      return new Promise((resolve, reject) => {
        // 解析URL
        const urlObj = new URL(url);
        const isHttps = urlObj.protocol === 'https:';
        const client = isHttps ? https : http;
    
        // 处理GET参数
        let path = urlObj.pathname;
        if (method.toUpperCase() === 'GET' && Object.keys(data).length > 0) {
          const params = querystring.stringify(data);
          path += (urlObj.search ? '&' : '?') + params;
        }
    
        // 处理POST请求体
        let postData = '';
        if (method.toUpperCase() === 'POST') {
          postData = JSON.stringify(data);
        }
    
        // 配置请求选项
        const options = {
          hostname: urlObj.hostname,
          port: urlObj.port || (isHttps ? 443 : 80),
          path: path + urlObj.search,
          method: method.toUpperCase(),
          headers: {
            'Content-Type': 'application/json; charset=utf-8',
            'Content-Length': Buffer.byteLength(postData)
          }
        };
    
        // 发送请求
        const req = client.request(options, (res) => {
          let rawData = '';
          res.on('data', (chunk) => { rawData += chunk; });
          res.on('end', () => {
            try {
              // 解析JSON响应
              const result = JSON.parse(rawData);
              resolve(result);
            } catch (err) {
              reject(new Error(`响应解析失败: ${err.message}`));
            }
          });
        });
    
        // 错误处理
        req.on('error', (err) => {
          reject(new Error(`请求失败: ${err.message}`));
        });
    
        // 写入POST请求体
        if (method.toUpperCase() === 'POST') {
          req.write(postData);
        }
        req.end();
      });
    }
    
    // 测试主函数
    async function main() {
      try {
        // ------------------- 测试GET请求 -------------------
        console.log('=== 开始测试GET请求 ===');
        const getUrl = 'https://api.example.com/user/list'; // 替换为实际接口
        const getParams = { page: 1, size: 10, keyword: 'test' };
        const getResult = await requestApi(getUrl, 'GET', getParams);
        console.log('GET请求响应:', JSON.stringify(getResult, null, 2));
    
        console.log('------------------------');
    
        // ------------------- 测试POST请求 -------------------
        console.log('=== 开始测试POST请求 ===');
        const postUrl = 'https://api.example.com/user/login'; // 替换为实际接口
        const postData = { username: 'admin', password: '123456' };
        const postResult = await requestApi(postUrl, 'POST', postData);
        console.log('POST请求响应:', JSON.stringify(postResult, null, 2));
      } catch (err) {
        console.error('请求出错:', err.message);
      }
    }
    
    // 执行测试
    main();
    
    
    
    #include 
    #include 
    #include 
    #include 
    
    // 定义缓冲区结构体,用于存储响应数据
    typedef struct {
        char* data;
        size_t size;
    } ResponseBuffer;
    
    // libcurl的写回调函数,将响应数据写入缓冲区
    static size_t write_callback(void* contents, size_t size, size_t nmemb, void* userp) {
        size_t realsize = size * nmemb;
        ResponseBuffer* buffer = (ResponseBuffer*)userp;
    
        // 重新分配内存存储响应数据
        char* temp = realloc(buffer->data, buffer->size + realsize + 1);
        if (temp == NULL) {
            fprintf(stderr, "内存分配失败!\n");
            return 0;
        }
        buffer->data = temp;
        memcpy(&(buffer->data[buffer->size]), contents, realsize);
        buffer->size += realsize;
        buffer->data[buffer->size] = '\0'; // 字符串结束符
    
        return realsize;
    }
    
    // 初始化响应缓冲区
    void init_buffer(ResponseBuffer* buffer) {
        buffer->data = malloc(1);
        buffer->size = 0;
    }
    
    // 释放响应缓冲区内存
    void free_buffer(ResponseBuffer* buffer) {
        free(buffer->data);
        buffer->data = NULL;
        buffer->size = 0;
    }
    
    /**
     * 发送GET请求
     * @param url 接口地址
     * @param params URL参数(格式:"key1=value1&key2=value2",传NULL则无参数)
     * @return 响应字符串(需手动free释放),失败返回NULL
     */
    char* http_get(const char* url, const char* params) {
        CURL* curl = curl_easy_init();
        if (!curl) {
            fprintf(stderr, "CURL初始化失败!\n");
            return NULL;
        }
    
        ResponseBuffer buffer;
        init_buffer(&buffer);
    
        // 拼接GET请求的URL和参数
        char* full_url = NULL;
        if (params && strlen(params) > 0) {
            full_url = (char*)malloc(strlen(url) + strlen(params) + 2);
            sprintf(full_url, "%s?%s", url, params);
        } else {
            full_url = (char*)malloc(strlen(url) + 1);
            strcpy(full_url, url);
        }
    
        // 设置CURL选项
        curl_easy_setopt(curl, CURLOPT_URL, full_url);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10L); // 超时时间10秒
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); // 跟随重定向
    
        // 执行GET请求
        CURLcode res = curl_easy_perform(curl);
        if (res != CURLE_OK) {
            fprintf(stderr, "GET请求失败: %s\n", curl_easy_strerror(res));
            free_buffer(&buffer);
            free(full_url);
            curl_easy_cleanup(curl);
            return NULL;
        }
    
        // 检查响应状态码
        long response_code;
        curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
        if (response_code < 200 || response_code >= 300) {
            fprintf(stderr, "GET请求返回异常状态码: %ld\n", response_code);
            free_buffer(&buffer);
            free(full_url);
            curl_easy_cleanup(curl);
            return NULL;
        }
    
        // 释放资源
        free(full_url);
        curl_easy_cleanup(curl);
    
        // 返回响应数据(需调用者手动free)
        return buffer.data;
    }
    
    /**
     * 发送POST请求(JSON格式请求体)
     * @param url 接口地址
     * @param json_data JSON请求体字符串
     * @return 响应字符串(需手动free释放),失败返回NULL
     */
    char* http_post_json(const char* url, const char* json_data) {
        CURL* curl = curl_easy_init();
        if (!curl) {
            fprintf(stderr, "CURL初始化失败!\n");
            return NULL;
        }
    
        ResponseBuffer buffer;
        init_buffer(&buffer);
    
        // 设置CURL选项
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10L); // 超时时间10秒
        curl_easy_setopt(curl, CURLOPT_POST, 1L); // 启用POST请求
    
        // 设置JSON请求体和请求头
        struct curl_slist* headers = NULL;
        headers = curl_slist_append(headers, "Content-Type: application/json; charset=utf-8");
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_data);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(json_data));
    
        // 执行POST请求
        CURLcode res = curl_easy_perform(curl);
        if (res != CURLE_OK) {
            fprintf(stderr, "POST请求失败: %s\n", curl_easy_strerror(res));
            free_buffer(&buffer);
            curl_slist_free_all(headers);
            curl_easy_cleanup(curl);
            return NULL;
        }
    
        // 检查响应状态码
        long response_code;
        curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
        if (response_code < 200 || response_code >= 300) {
            fprintf(stderr, "POST请求返回异常状态码: %ld\n", response_code);
            free_buffer(&buffer);
            curl_slist_free_all(headers);
            curl_easy_cleanup(curl);
            return NULL;
        }
    
        // 释放资源
        curl_slist_free_all(headers);
        curl_easy_cleanup(curl);
    
        // 返回响应数据(需调用者手动free)
        return buffer.data;
    }
    
    int main(void) {
        // 初始化libcurl
        curl_global_init(CURL_GLOBAL_ALL);
    
        // ------------------- 测试GET请求 -------------------
        printf("=== 开始测试GET请求 ===\n");
        const char* get_url = "https://api.example.com/user/list"; // 替换为实际接口
        const char* get_params = "page=1&size=10&keyword=test";   // GET参数
        char* get_resp = http_get(get_url, get_params);
        if (get_resp) {
            printf("GET请求响应结果:\n%s\n", get_resp);
            free(get_resp); // 释放响应内存
        }
    
        printf("------------------------\n");
    
        // ------------------- 测试POST请求 -------------------
        printf("=== 开始测试POST请求 ===\n");
        const char* post_url = "https://api.example.com/user/login"; // 替换为实际接口
        const char* post_json = "{\"username\":\"admin\",\"password\":\"123456\"}"; // JSON请求体
        char* post_resp = http_post_json(post_url, post_json);
        if (post_resp) {
            printf("POST请求响应结果:\n%s\n", post_resp);
            free(post_resp); // 释放响应内存
        }
    
        // 清理libcurl全局资源
        curl_global_cleanup();
        return 0;
    }
    
    
    
    #include 
    #include 
    #include 
    #include 
    
    // 响应数据缓冲区类,封装内存管理
    class ResponseBuffer {
    public:
        std::string data; // 存储响应数据的字符串,自动管理内存
    
        // libcurl写回调函数,将响应数据写入缓冲区
        static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) {
            size_t realSize = size * nmemb;
            ResponseBuffer* buffer = static_cast(userp);
            buffer->data.append(static_cast(contents), realSize);
            return realSize;
        }
    };
    
    // HTTP请求工具类,封装GET/POST(JSON)方法
    class HttpRequester {
    private:
        CURL* curl; // CURL句柄
        long timeout; // 请求超时时间(秒)
    
    public:
        // 构造函数:初始化CURL
        HttpRequester(long timeout = 10) : timeout(timeout) {
            curl_global_init(CURL_GLOBAL_ALL);
            curl = curl_easy_init();
            if (!curl) {
                throw std::runtime_error("CURL初始化失败!");
            }
            // 设置全局超时
            curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout);
            // 跟随HTTP重定向
            curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
        }
    
        // 析构函数:释放CURL资源
        ~HttpRequester() {
            if (curl) {
                curl_easy_cleanup(curl);
            }
            curl_global_cleanup();
        }
    
        // 禁用拷贝构造和赋值,避免资源重复释放
        HttpRequester(const HttpRequester&) = delete;
        HttpRequester& operator=(const HttpRequester&) = delete;
    
        /**
         * 发送GET请求
         * @param url 接口地址
         * @param params URL参数(格式:"key1=value1&key2=value2")
         * @return 响应字符串
         * @throws std::runtime_error 请求失败时抛出异常
         */
        std::string Get(const std::string& url, const std::string& params = "") {
            if (!curl) {
                throw std::runtime_error("CURL句柄未初始化");
            }
    
            // 拼接完整URL(带参数)
            std::string fullUrl = url;
            if (!params.empty()) {
                fullUrl += "?" + params;
            }
    
            ResponseBuffer buffer;
            // 设置CURL选项
            curl_easy_setopt(curl, CURLOPT_URL, fullUrl.c_str());
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, ResponseBuffer::WriteCallback);
            curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
    
            // 执行GET请求
            CURLcode res = curl_easy_perform(curl);
            if (res != CURLE_OK) {
                throw std::runtime_error("GET请求失败: " + std::string(curl_easy_strerror(res)));
            }
    
            // 检查响应状态码
            long responseCode;
            curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &responseCode);
            if (responseCode < 200 || responseCode >= 300) {
                throw std::runtime_error("GET请求返回异常状态码: " + std::to_string(responseCode));
            }
    
            return buffer.data;
        }
    
        /**
         * 发送POST请求(JSON格式请求体)
         * @param url 接口地址
         * @param jsonData JSON请求体字符串
         * @return 响应字符串
         * @throws std::runtime_error 请求失败时抛出异常
         */
        std::string PostJson(const std::string& url, const std::string& jsonData) {
            if (!curl) {
                throw std::runtime_error("CURL句柄未初始化");
            }
    
            ResponseBuffer buffer;
            // 设置POST请求基础选项
            curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
            curl_easy_setopt(curl, CURLOPT_POST, 1L); // 启用POST方法
            curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonData.c_str()); // 设置请求体
            curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, jsonData.length()); // 设置请求体长度
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, ResponseBuffer::WriteCallback);
            curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
    
            // 设置JSON请求头
            struct curl_slist* headers = nullptr;
            headers = curl_slist_append(headers, "Content-Type: application/json; charset=utf-8");
            curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
    
            // 执行POST请求
            CURLcode res = curl_easy_perform(curl);
            // 释放请求头链表(无论请求成功与否都要释放)
            curl_slist_free_all(headers);
    
            if (res != CURLE_OK) {
                throw std::runtime_error("POST请求失败: " + std::string(curl_easy_strerror(res)));
            }
    
            // 检查响应状态码
            long responseCode;
            curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &responseCode);
            if (responseCode < 200 || responseCode >= 300) {
                throw std::runtime_error("POST请求返回异常状态码: " + std::to_string(responseCode));
            }
    
            return buffer.data;
        }
    };
    
    // 主函数:测试GET/POST请求
    int main() {
        try {
            // 创建HTTP请求器实例
            HttpRequester requester;
    
            // ------------------- 测试GET请求 -------------------
            std::cout << "=== 开始测试GET请求 ===" << std::endl;
            std::string getUrl = "https://api.example.com/user/list"; // 替换为实际接口
            std::string getParams = "page=1&size=10&keyword=test";   // GET参数
            std::string getResp = requester.Get(getUrl, getParams);
            std::cout << "GET请求响应结果:\n" << getResp << std::endl;
    
            std::cout << "------------------------" << std::endl;
    
            // ------------------- 测试POST请求 -------------------
            std::cout << "=== 开始测试POST请求 ===" << std::endl;
            std::string postUrl = "https://api.example.com/user/login"; // 替换为实际接口
            std::string postJson = R"({"username":"admin","password":"123456"})"; // JSON请求体(原生字符串避免转义)
            std::string postResp = requester.PostJson(postUrl, postJson);
            std::cout << "POST请求响应结果:\n" << postResp << std::endl;
    
        } catch (const std::exception& e) {
            // 捕获所有异常并打印
            std::cerr << "请求出错: " << e.what() << std::endl;
            return 1;
        }
    
        return 0;
    }
    
    
    
    using System;
    using System.Net.Http;
    using System.Text;
    using System.Threading.Tasks;
    using System.Text.Json;
    
    /// 
    /// HTTP请求工具类,封装GET/POST(JSON)请求
    /// 
    public class HttpRequester
    {
        // 静态HttpClient实例(推荐单例使用,避免频繁创建释放连接)
        private static readonly HttpClient _httpClient = new HttpClient
        {
            Timeout = TimeSpan.FromSeconds(10) // 设置10秒超时
        };
    
        /// 
        /// 发送GET请求
        /// 
        /// 接口完整地址
        /// URL查询参数(键值对)
        /// 格式化后的JSON响应字符串
        /// 请求失败时抛出异常
        public static async Task GetAsync(string url, System.Collections.Generic.Dictionary paramsDict = null)
        {
            // 拼接查询参数
            if (paramsDict != null && paramsDict.Count > 0)
            {
                var queryBuilder = new System.Text.StringBuilder();
                foreach (var pair in paramsDict)
                {
                    queryBuilder.Append($"{Uri.EscapeDataString(pair.Key)}={Uri.EscapeDataString(pair.Value)}&");
                }
                string query = queryBuilder.ToString().TrimEnd('&');
                url += $"{(url.Contains("?") ? "&" : "?")}{query}";
            }
    
            // 发送GET请求
            using var response = await _httpClient.GetAsync(url);
            // 检查响应状态码,非2xx则抛出异常
            response.EnsureSuccessStatusCode();
    
            // 读取响应并格式化JSON
            string jsonResponse = await response.Content.ReadAsStringAsync();
            return FormatJson(jsonResponse);
        }
    
        /// 
        /// 发送POST请求(JSON格式请求体)
        /// 
        /// 接口完整地址
        /// 请求体数据(任意可序列化的对象)
        /// 格式化后的JSON响应字符串
        /// 请求失败时抛出异常
        public static async Task PostJsonAsync(string url, T data)
        {
            // 将对象序列化为JSON字符串
            string jsonData = JsonSerializer.Serialize(data, new JsonSerializerOptions { WriteIndented = false });
            // 构造JSON请求体
            using var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
            // 发送POST请求
            using var response = await _httpClient.PostAsync(url, content);
            // 检查响应状态码
            response.EnsureSuccessStatusCode();
    
            // 读取响应并格式化JSON
            string jsonResponse = await response.Content.ReadAsStringAsync();
            return FormatJson(jsonResponse);
        }
    
        /// 
        /// 格式化JSON字符串(便于阅读)
        /// 
        private static string FormatJson(string json)
        {
            if (string.IsNullOrEmpty(json)) return json;
            var jsonDoc = JsonDocument.Parse(json);
            return JsonSerializer.Serialize(jsonDoc, new JsonSerializerOptions { WriteIndented = true });
        }
    }
    
    /// 
    /// 测试类,包含主函数
    /// 
    class Program
    {
        // C# 7.1+支持Main方法为async
        static async Task Main(string[] args)
        {
            try
            {
                // ------------------- 测试GET请求 -------------------
                Console.WriteLine("=== 开始测试GET请求 ===");
                string getUrl = "https://api.example.com/user/list"; // 替换为实际接口
                var getParams = new System.Collections.Generic.Dictionary
                {
                    { "page", "1" },
                    { "size", "10" },
                    { "keyword", "test" }
                };
                string getResponse = await HttpRequester.GetAsync(getUrl, getParams);
                Console.WriteLine("GET请求响应结果:\n" + getResponse);
    
                Console.WriteLine("------------------------");
    
                // ------------------- 测试POST请求 -------------------
                Console.WriteLine("=== 开始测试POST请求 ===");
                string postUrl = "https://api.example.com/user/login"; // 替换为实际接口
                // 定义请求体对象(可替换为自定义类)
                var postData = new
                {
                    username = "admin",
                    password = "123456"
                };
                string postResponse = await HttpRequester.PostJsonAsync(postUrl, postData);
                Console.WriteLine("POST请求响应结果:\n" + postResponse);
            }
            catch (HttpRequestException ex)
            {
                Console.WriteLine($"请求失败: {ex.Message}");
                if (ex.InnerException != null)
                {
                    Console.WriteLine($"内部异常: {ex.InnerException.Message}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"程序异常: {ex.Message}");
            }
    
            // 防止控制台立即关闭
            Console.WriteLine("\n按任意键退出...");
            Console.ReadKey();
        }
    }
    
    
    
    ' 引入必要的命名空间
    Imports System
    Imports System.Net.Http
    Imports System.Text
    Imports System.Threading.Tasks
    Imports System.Collections.Generic
    Imports System.Text.Json
    Imports System.Net.Http.Headers
    
    ''' 
    ''' HTTP请求工具类,封装GET/POST(JSON)核心逻辑
    ''' 基于.NET内置HttpClient,支持异步请求、JSON序列化/反序列化
    ''' 
    Public Class HttpHelper
        ' 静态HttpClient单例(推荐单例使用,避免端口耗尽)
        Private Shared ReadOnly _httpClient As New HttpClient With {
            .Timeout = TimeSpan.FromSeconds(10) ' 设置10秒请求超时
        }
    
        ''' 
        ''' 发送GET请求,自动拼接URL参数
        ''' 
        ''' 接口基础地址
        ''' URL查询参数(键值对)
        ''' 格式化后的JSON响应字符串
        Public Shared Async Function SendGetRequestAsync(baseUrl As String, Optional parameters As Dictionary(Of String, String) = Nothing) As Task(Of String)
            Try
                ' 拼接查询参数
                Dim requestUrl As String = baseUrl
                If parameters IsNot Nothing AndAlso parameters.Count > 0 Then
                    Dim queryBuilder As New StringBuilder()
                    For Each pair In parameters
                        queryBuilder.Append($"{Uri.EscapeDataString(pair.Key)}={Uri.EscapeDataString(pair.Value)}&")
                    Next
                    Dim query As String = queryBuilder.ToString().TrimEnd("&"c)
                    requestUrl &= If(requestUrl.Contains("?"), "&", "?") & query
                End If
    
                ' 发送GET请求并验证状态码
                Dim response As HttpResponseMessage = Await _httpClient.GetAsync(requestUrl)
                response.EnsureSuccessStatusCode()
    
                ' 读取响应并格式化JSON
                Dim responseJson As String = Await response.Content.ReadAsStringAsync()
                Return FormatJsonString(responseJson)
            Catch ex As HttpRequestException
                Throw New Exception($"GET请求失败:{ex.Message}", ex)
            End Try
        End Function
    
        ''' 
        ''' 发送POST请求(JSON格式请求体)
        ''' 
        ''' 请求体数据类型
        ''' 接口完整地址
        ''' 请求体数据(任意可序列化对象)
        ''' 格式化后的JSON响应字符串
        Public Shared Async Function SendPostJsonRequestAsync(Of T)(apiUrl As String, requestData As T) As Task(Of String)
            Try
                ' 将对象序列化为JSON字符串
                Dim jsonBody As String = JsonSerializer.Serialize(requestData, New JsonSerializerOptions With {.WriteIndented = False})
                ' 构造JSON请求体
                Dim content As New StringContent(jsonBody, Encoding.UTF8, "application/json")
    
                ' 发送POST请求并验证状态码
                Dim response As HttpResponseMessage = Await _httpClient.PostAsync(apiUrl, content)
                response.EnsureSuccessStatusCode()
    
                ' 读取响应并格式化JSON
                Dim responseJson As String = Await response.Content.ReadAsStringAsync()
                Return FormatJsonString(responseJson)
            Catch ex As HttpRequestException
                Throw New Exception($"POST请求失败:{ex.Message}", ex)
            End Try
        End Function
    
        ''' 
        ''' 添加全局请求头(如Token、API Key)
        ''' 
        ''' 请求头名称
        ''' 请求头值
        Public Shared Sub AddGlobalHeader(headerName As String, headerValue As String)
            If Not _httpClient.DefaultRequestHeaders.Contains(headerName) Then
                _httpClient.DefaultRequestHeaders.Add(headerName, headerValue)
            End If
        End Sub
    
        ''' 
        ''' 格式化JSON字符串,提升可读性
        ''' 
        ''' 原始JSON字符串
        ''' 格式化后的JSON
        Private Shared Function FormatJsonString(rawJson As String) As String
            If String.IsNullOrEmpty(rawJson) Then Return rawJson
            Dim jsonDoc As JsonDocument = JsonDocument.Parse(rawJson)
            Return JsonSerializer.Serialize(jsonDoc, New JsonSerializerOptions With {.WriteIndented = True})
        End Function
    End Class
    
    ''' 
    ''' 测试程序入口,演示GET/POST请求的使用
    ''' 
    Module Program
        ' VB.NET主函数,异步执行测试逻辑
        Sub Main()
            ' 同步等待异步方法执行(控制台程序专用)
            TestApiRequestsAsync().GetAwaiter().GetResult()
            ' 防止控制台立即关闭
            Console.WriteLine(vbCrLf & "按任意键退出程序...")
            Console.ReadKey()
        End Sub
    
        ''' 
        ''' 测试GET和POST API请求
        ''' 
        Private Async Function TestApiRequestsAsync() As Task
            Try
                ' 可选:添加全局请求头(如Token认证)
                ' HttpHelper.AddGlobalHeader("Authorization", "Bearer your_token_here")
                ' HttpHelper.AddGlobalHeader("X-API-Key", "your_api_key_here")
    
                ' ------------------- 测试GET请求 -------------------
                Console.WriteLine("=== 开始执行GET请求 ===")
                Dim getUrl As String = "https://api.example.com/user/list" ' 替换为实际接口地址
                Dim getParams As New Dictionary(Of String, String) From {
                    {"page", "1"},
                    {"size", "10"},
                    {"keyword", "vb.net_test"}
                }
                Dim getResponse As String = Await HttpHelper.SendGetRequestAsync(getUrl, getParams)
                Console.WriteLine("GET请求响应结果:" & vbCrLf & getResponse)
    
                Console.WriteLine("------------------------")
    
                ' ------------------- 测试POST请求 -------------------
                Console.WriteLine("=== 开始执行POST请求 ===")
                Dim postUrl As String = "https://api.example.com/user/login" ' 替换为实际接口地址
                ' 匿名类型请求体(也可替换为自定义实体类)
                Dim postData = New With {
                    .username = "vbnet_admin",
                    .password = "123456_test",
                    .rememberMe = True
                }
                Dim postResponse As String = Await HttpHelper.SendPostJsonRequestAsync(postUrl, postData)
                Console.WriteLine("POST请求响应结果:" & vbCrLf & postResponse)
    
            Catch ex As Exception
                Console.WriteLine($"请求异常:{ex.Message}")
                If ex.InnerException IsNot Nothing Then
                    Console.WriteLine($"内部异常详情:{ex.InnerException.Message}")
                End If
            End Try
        End Function
    End Module
    
    
    本工具支持 API 接口的实时请求测试,实时返回接口响应结果,助力开发者快速排查接口问题。
    ⚠️ 本工具为真实请求,将消耗额度 / 产生计费,请勿填写私密信息。
    ⚠️ 本页面工具将自动添加请求头,无需手动添加。
    请求参数
    参数名 参数值 操作
    请求参数
    参数名 参数值

    仅需三步即可快速接入

    1
    注册认证 · 获取密钥

    注册开发者账号并完成实名认证,在 控制台 申请专属API密钥(支持多种安全认证策略)。

    2
    接口调试 · 开发集成

    使用平台 在线调试工具 快速验证接口,通过官方API文档完成业务系统的接口集成与联调。

    3
    生产上线 · 监控运维

    在生产环境调用接口,然后在 个人中心 查看调用日志、平台提供弹性配额与故障排查支持。