智慧云信

使用C++语言调用短信接口发送验证码短信教程

C++对接验证码短信接口DEMO示例

圆点

使用C++语言调用短信接口发送验证码短信教程(图1)

开发过程中,验证码短信是常用的安全验证手段。这篇文章讲怎么用 C++ 调用短信接口,把验证码短信发出去。接口选用 https://api.3yit.com/api/send-sms-single,通过 POST 请求携带参数,从返回结果里拿到发送状态。

准备工作

开始之前,先确认已经拿到短信服务商的接口文档,弄明白 sp_idpassword(或签名算法)等关键信息,同时确认开发环境支持 C++,并装好合适的网络请求库,比如 curl 或 libcurl。

安装和配置 libcurl

C++ 里发 HTTP 请求一般用 libcurl。先在系统里装好 libcurl,不同操作系统的安装方式不一样,具体可以看 libcurl 官网的安装指南。

获取接口参数

登录智慧云信官网,选择对应的产品(如【验证码】),在上方选项卡中点击【开发者】→【HTTP开发文档】,就能看到具体的 API 方法名称,以及各参数的 key 和对应值,通常包括 sp_idmobilecontentpassword 等。各参数含义如下:

  • sp_id:产品编号,全局唯一,一般由 6 位数字组成。
  • mobile:接收短信的手机号码。
  • content:短信内容,包含签名和正文。例如“【智慧云信】您的验证码是456790,请妥善保管”,其中【智慧云信】是签名,需在签名报备中申请;后面的提示语是短信模板,需在模板报备中申请,审核通过后才能发送。
  • password:用 SP_ID 密码经 MD5 加密后生成的接口密码(非登录密码),由 32 位随机字符串组成。

编写 C++ 代码

下面是用 C++ 和 libcurl 调用短信接口发送验证码短信的示例代码:

#include <iostream>
#include <string>
#include <curl/curl.h>
size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) {
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
int main() {
CURL *curl;
CURLcode res;
std::string readBuffer;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/x-www-form-urlencoded");
std::string postData = "sp_id=5xxxxx&mobile=176xxxxxxxx&content=%E3%80%90%E7%AD%BE%E5%90%8D%E3%80%91%E9%A2%98%E7%A0%81123&password=xxxxxxxxxxx";
curl_easy_setopt(curl, CURLOPT_URL, "https://api.3yit.com/api/send-sms-single");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postData.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
} else {
std::cout << "Response: " << readBuffer << std::endl;
// 解析JSON响应(这里省略了JSON解析代码,您可以使用如nlohmann/json等库进行解析)
// ...
// 提取code、msg和msg_id等关键信息
// ...
// 输出结果
// ...
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}

代码说明

  • 引入头文件:开头引入 iostreamstringcurl/curl.h
  • WriteCallback 函数:接收服务器返回的响应数据,追加到一个 std::string 对象里。
  • main 函数:先初始化 libcurl,创建 CURL 对象,设置请求 URL、请求头和 POST 数据,然后调用 curl_easy_perform 发送请求,把响应写入 readBuffer,最后检查是否成功并输出响应数据。
  • JSON 解析部分在示例里省略了,可以用 nlohmann/json 这类库来实现。

解析 JSON 响应

收到响应后,需要解析 JSON 拿到发送结果。C++ 里可以用 nlohmann/json 这样的库。

安装 nlohmann/json

用包管理器(vcpkg、Conan 或项目构建系统支持的方式)安装 nlohmann/json,也可以直接从 GitHub 下载源码包含进项目。

解析 JSON 并提取关键信息

在收到响应后添加一个解析块,用 nlohmann/json 提取关键信息:

#include <nlohmann/json.hpp>
using json = nlohmann::json;
// ... 其他代码 ...
if(res != CURLE_OK) {
std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
} else {
std::cout << "Response: " << readBuffer << std::endl;
// 解析JSON响应
try {
json response = json::parse(readBuffer);
// 提取code、msg和msg_id等关键信息
int code = response["code"];
std::string msg = response["msg"];
std::string msg_id = response.contains("msg_id") ? response["msg_id"] : "N/A"; // 检查是否存在msg_id
// 输出结果
std::cout << "Code: " << code << std::endl;
std::cout << "Message: " << msg << std::endl;
std::cout << "Message ID: " << msg_id << std::endl;
// 根据code值判断发送是否成功,并做相应处理
if (code == 0) {
std::cout << "验证码短信发送成功!" << std::endl;
} else {
std::cout << "验证码短信发送失败:" << msg << std::endl;
}
} catch (const json::exception& e) {
std::cerr << "JSON解析错误: " << e.what() << std::endl;
}
}
// ... 其他代码 ...

错误处理

上面的代码里用 try-catch 块捕获 nlohmann/json 解析时可能抛出的异常,同时检查响应里的 code 值判断发送是否成功,并输出相应消息。

注意事项

  • 示例只用了密码(password)做认证。如果改用签名(signature),要按服务商的签名算法算好签名,作为请求参数一起发送。
  • 实际开发中要对各类错误做充分处理,包括网络错误、请求超时、服务器内部错误等。
  • 方便调试的话,在代码里加日志记录功能,记下关键信息和错误信息。
  • 用户手机号、验证码属于敏感信息,注意数据安全和隐私保护,不要泄露给未授权的第三方。

按上面几步,就能用 C++ 和 libcurl 调通短信接口,发验证码短信并解析返回结果。

其他语言教程:PHP · Java · ASP · ASP.NET(C#) · JSP · Node.js · Delphi · Go · Python · Ruby · Shell · VB · C。更多信息见短信API接入指南

代码里的 API 地址、账号和密码替换成你自己的就能跑通。如果还没有账号,去智慧云信官网注册一个,注册就能免费测试,验证码、通知、营销短信都支持。

内容可信度说明

作者:智慧云信通信技术团队

技术审核:国际短信与号码检测产品组

最后更新:2026-08-13

适用范围:国际短信、国际验证码短信、国际语音筛单、空号检测、号码实时检测等出海通信与号码检测场景。

本文结合智慧云信平台产品能力、客户接入问题和通道运营经验整理。不同国家/地区的 Sender ID、模板审核、计费方式和合规要求可能变化,实际发送前建议以当前通道审核与项目沟通结果为准。