You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++使用Poco库发送无请求体GET请求无法获取Binance接口响应

问题原因

现有代码无法正常获取响应的核心问题如下:

  • 目标接口为HTTPS协议,原代码使用的Poco::Net::HTTPClientSession仅支持明文HTTP传输,无法完成TLS握手,必须替换为支持SSL的Poco::Net::HTTPSClientSession并初始化SSL上下文。
  • 代码获取到响应体输入流后未执行读取操作,无法拿到返回的JSON内容。
  • 输出使用的cout未加std::命名空间限定,会直接触发编译错误。
  • 请求未携带Host头,部分服务端会拦截缺失该字段的请求。
修正后完整代码
#include <iostream>
#include <string>
#include <sstream>
#include <Poco/URI.h>
#include <Poco/Net/HTTPSClientSession.h>
#include <Poco/Net/HTTPRequest.h>
#include <Poco/Net/HTTPResponse.h>
#include <Poco/Net/SSLManager.h>
#include <Poco/Net/Context.h>
#include <Poco/Net/AcceptCertificateHandler.h>

int main()
{
    // 初始化SSL客户端环境
    Poco::Net::initializeSSL();
    Poco::SharedPtr<Poco::Net::InvalidCertificateHandler> certHandler = new Poco::Net::AcceptCertificateHandler(false);
    Poco::Net::Context::Ptr sslContext = new Poco::Net::Context(Poco::Net::Context::CLIENT_USE, "");
    Poco::Net::SSLManager::instance().initializeClient(nullptr, certHandler, sslContext);

    // 解析目标地址
    Poco::URI uri("https://api.binance.com/api/v3/time");
    // 创建HTTPS客户端会话
    Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort(), sslContext);
    
    // 构造GET请求,补充必填Host头
    Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, uri.getPathAndQuery(), Poco::Net::HTTPMessage::HTTP_1_1);
    request.setHost(uri.getHost());
    
    // 发送请求
    session.sendRequest(request);
    
    // 接收响应头
    Poco::Net::HTTPResponse response;
    std::istream& resStream = session.receiveResponse(response);
    
    // 打印响应状态码 200即为请求成功
    std::cout << "响应状态码: " << response.getStatus() << std::endl;
    
    // 读取完整响应体
    std::stringstream resBuffer;
    resBuffer << resStream.rdbuf();
    std::string resBody = resBuffer.str();
    std::cout << "返回内容: " << resBody << std::endl;

    // 释放SSL资源
    Poco::Net::uninitializeSSL();
    return 0;
}
编译与使用说明
  • 编译时需要链接对应依赖库,g++编译命令参考:
    g++ binance_time.cpp -o binance_time -lPocoNet -lPocoNetSSL -lPocoCrypto -lPocoFoundation -lssl -lcrypto -lpthread
  • 请求成功后返回格式如下,serverTime字段即为币安服务器的毫秒级Unix时间戳:

{"serverTime":1718260000000}

  • 如需提取时间字段,引入任意JSON解析库读取对应键值即可,该接口不需要携带任何认证参数。

内容的提问来源于stack exchange,提问作者Remì1998

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 03:18:25