文档中心

为您提供清晰、准确、易于理解的API文档,帮助开发人员快速上手、理解和使用产品。

产品目录
调用次数:6 次

姓氏起源查询

正常 全站会员免费次数包

为用户提供详尽的姓氏历史背景、来源及演变过程,帮助用户深入了解自己姓氏背后的故事和文化内涵。

更新日期
2024-02-17
调用权限
正常
每日限制
无限制
请求频率限制
1秒15次
参考价格
0.1元/次

计费控制优先级(按已开通的类型进行):

全站会员->单独包月->次数包->点数计费->账户余额->免费额度

全站会员:

全站会员有效期内,可免费使用本产品。

次数包:

额度 价格 有效期
100 (次) ¥ 10 低至0.1/次 一年
1000 (次) ¥ 100 低至0.1/次 一年
10000 (次) ¥ 1000 低至0.1/次 一年

请求限制:

免费/测试用户请求频率限制 请求频率总限制 全站会员请求频率限制 每日请求次数总限制
0秒0次 每个免费用户的QPS总限制 1秒15次 每个用户QPS总限制 1秒10次 每个全站会员用户的QPS总限制 不限 每个用户每日请求总次数

其他准入要求:

  • 账户余额/点数计费的用户,不限制每日请求次数和QPS
  • 次数包计费的用户,不限制每日请求次数和QPS
  • 接口地址:https://api.23bt.cn/api/surname/index

    返回格式:application/json

    请求方式:HTTPGET

    请求示例:https://api.23bt.cn/api/surname/index?key=你的key&xing=输入姓

    请求HEADER:

    名称
    Content-Typeapplication/x-www-form-urlencoded;charset:utf-8;

    请求参数说明:

    名称必填类型示例值说明
    keystring35kj5jnlj53453kl5j43nj5接口密钥,在控制台->密钥管理查看
    xingstring姓(如:冯)

    返回参数说明:

    名称类型说明
    codeint状态码
    msgstring状态信息
    datastring请求结果数据集
    debugstring/array调试数据
    exec_timefloat执行耗时
    user_ipstring客户端IP

    免责声明:

    本服务仅供个人学习、学术研究目的使用,未经授权,请勿分享、传播输入及生成的文本、图片内容。用户在从事与本服务相关的一切行为(包括但不限于访问浏览、利用、转载、宣传介绍)时,应以善意且谨慎的态度行事并承担相应的风险和责任。用户需确保不得利用本服务进行危害国家安全和社会公共利益、扰乱经济秩序和社会秩序、侵犯他人合法权益等法律、行政法规禁止的活动,并且自定义输入文本不得包含违反法律法规、政治相关、侵犯他人合法权益的内容。对于用户因使用本服务而导致的任何损失或风险,包括但不限于由于使用本服务而产生的错误、疏忽、中断、删除、故障、延迟或通讯线路故障所导致的任何损失或损害,本服务的开发者将不承担任何责任。

    返回示例:

    {"xing": "赵",        "intro": "赵姓起源<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; 出自嬴姓,形成于西周,祖先是伯益,具体始祖是造父。伯益为颛顼帝裔孙,被舜赐姓嬴。造父为伯益的9世孙,是西周时著名的驾驭马车的能手,他在桃林一带得到8匹骏马,调训好后献给周穆王。周穆王配备了上好的马车,让造父为他驾驶,经常外出打猎、游玩,有一次西行至昆仑山,见到西王母,乐而忘归,而正在这时听到徐国徐偃王造反的消息,周穆王非常着急,在此关键时刻,造父驾车日驰千里,使周穆王迅速返回了镐京,及时发兵打败了徐偃王,平定了叛乱。由于造父立了大功,周穆王便把赵城赐给他,自此以后,造父族就称为赵氏。周穆王传周幽王时,因幽王无道,造父的7世孙叔带离周仕晋,从此赵氏子孙世代为晋大夫。到战国初年,叔带的12世孙赵襄自联合魏氏、韩氏三家分晋,建立赵国。至他的孙子赵籍时,正式获得了周烈王的承认,与韩、魏两家并列为诸侯。公元前222年,赵国为秦国所灭,其王室贵族和平民百姓纷纷以国名为姓,称赵氏。<P>  出自他族改姓。如汉朝时有赵安稽,本匈奴人;唐朝时有赵曳天,本南蛮人;五代时有赵国珍,本牂牁(今广西、贵州一带)蛮族人。<BR> </P>
    <P>聚集地[迁徙分布]</P>
    <P>&nbsp;&nbsp;&nbsp; 秦代,真定人(今河北正定)赵佗任南海郡龙川县令,后为南海尉,于秦末兼并桂林、南海和象三郡,建立南越国,汉高祖时受封为南越王。此后,赵佗的子孙繁衍于今广东、广西一带。东汉末年,京师遭董卓之乱,洛阳人赵达避难迁居江东。唐高宗总章年间,中原人赵端随陈政、陈元光父子入闽开辟漳州。五代时,刘龑在广州建立南汉政权,洛阳人赵光裔、光逢、光胤三兄弟因此而在南海安家;开封人赵廷隐、赵崇韬父子因仕后蜀而在四川成都定居。南宋初,开封人赵用贤随宋高宗赵构南逃,移居江苏常熟,郑州人赵蕃移居江西上饶。南宋灭亡后,宗室赵氏散逃至澎湖、潮阳等地,后在闽、粤一带发展繁衍。</P>
    <P>&nbsp;&nbsp;&nbsp; 赵,是中国的一个大姓。在台湾亦然,被排为台湾姓氏的第四十七位。赵姓移居台湾,是清朝康熙二十二年(公元1682年)的事。当时,郑成功的儿子郑经就安置了赵、黄、董、柯、李等五姓,后来台湾各地的赵姓随之增多。康熙六十年(公元1721年)朱一贵起义,下淡水港有一名义民赵姓和;雍正初年,有赵姓招募福建漳州和泉州两地的佃人,乾隆年间,有泉州人赵普、赵晋两人。目前,全省各地的赵姓人士,以台中、台南和基隆三地为最多。后又有不少人移居海外,分布于欧美及东南亚一些国家和地区。</P>
    <P><BR>堂号</P>
    <P>  "半部堂":五代后周时,赵普助赵匡胤发动"陈桥兵变"建立宋朝。宋太祖赵匡胤于是封赵普为宰相。他又提出了"杯酒释兵权"的方法削减了地方武装,巩固了中央集权,想方设法,把天下治理得很好。宋太祖就问:"爱卿!你怎样把国家治得这么好的?"赵普回答说:"我不过是靠了半部《论语》罢了!"赵普死后,家人整理他的书箱,果真什么宝贝也没有,只有他活着的时候常读的一部《论语》。</P>
    <P>  "琴鹤堂":宋朝时殿中侍御史赵忭是个清廉爱民的好官,人称"铁面御史"。他当成都知府的时候,一清如水。他看到人民安居乐业,就高兴地弹琴取乐。他养了一只鹤,时常用鹤毛的洁白勉励自己不贪污;用鹤头上的红色勉励自己赤心为国。他穷得什么东西都没有,只有一琴一鹤。<BR>  赵氏还以"天水"、"孝思"、"谷治"、"萃涣"等为堂号。&nbsp; </P>
    <P><BR>历史名人: </P>
    <P>&nbsp;&nbsp;&nbsp; 赵匡胤:本为后周大将,"陈桥兵变",代周为帝,建立宋朝,立国320之久,使赵姓的宗族声望达到了最为辉煌的时期。<BR>  赵文渊:北周著名书法家,擅长楷、隶书。当时碑文多出其手,又在西魏时奉命编定了一部六体书法字典。<BR>  赵 胜:平原君,以"食客数千人"而著称,是赵氏有史以来最负盛名的人物。<BR>  赵 雍:即赵武灵王,他提倡"胡服骑射",始创骑兵,这是中国军事史上的一大进步。<BR>  赵之堔:清代"西泠八家"之一。<BR>  赵之廉:清代杰出书画家、篆刻家。其书、画、篆刻对后世都有一定影响,与任伯年、吴昌硕并称为"清末三大画家"。<BR>  赵 翼:明代史学家、文学家。长于史学,考据精赅,其诗与袁枚、蒋士铨齐名,并称"江右三大家"或"乾隆三大家"。<BR>  赵孟頫:元代杰出书画家。精于正、行书和小楷,其笔法园转遒丽,人称"赵体"。<BR>  赵 云:三国时蜀国大将,为"五虎上将"之一。<BR>  赵公明:相传秦时得道于终南山。人称之为"赵公元帅",被奉为"财神"。</P>"   "debug": "本站所有接口仅限学习使用6456479" }


    错误码类型说明
    403int没有权限
    400int参数传递不正确
    500int服务器内部错误
    
                                            <?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.23bt.cn/api/surname/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}&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
    {
        // 自定义异常类
    }
    
    
    
    
    
    
    
    //jQuery-Ajax
    $.ajax({
    	url: 'https://api.23bt.cn/api/surname/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 ()
    子程序名 返回值类型 公开 备 注
    Send_API    
    变量名 类 型 静态 数组 备 注
    REQU_Data 文本型   提交字符串
    return 文本型   返回字符串
    API_URL 文本型   接口地址
    API_KEY 文本型   接口密钥
    API_URL = “https://api.23bt.cn/api/surname/index”
    API_KEY = “你的接口密钥,登录控制台后在密钥管理页面申请”
    REQU_Data = "请求参数,根据接口文档的请求参数来拼接字符串(例a=a&b=b&c=c)"
    return = 编码_Utf8到Ansi (网页_访问 (API_URL + “?key=” + API_KEY + REQU_Data, , , , , “User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36”))
    输出调试文本 (return)
    
    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://api.23bt.cn/api/surname/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://api.23bt.cn/api/surname/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://api.23bt.cn/api/surname/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: 'api.23bt.cn',
      path: '/api/surname/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: 'api.23bt.cn',
      path: '/api/surname/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://api.23bt.cn/api/surname/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://api.23bt.cn/api/surname/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://api.23bt.cn/api/surname/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://api.23bt.cn/api/surname/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`事件。
    
    参数名 填写参数值

    仅需三步即可快速接入

    1
    在线调试

    填写业务相关参数免费在线调试

    2
    生成代码

    生成符合你的开发语言代码,复制即可

    3
    业务上线

    调整你后端部分逻辑代码即可上线使用

    数据驱动未来

    立即注册

    返回顶部