微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Boost Asio C ++的HTTP获取请求

如何解决使用Boost Asio C ++的HTTP获取请求

我是C ++和Boost Asio的新手,我想使用Boost Asio向程序中具有oAthn2(承载令牌)的网站创建一个简单的HTTP Get请求,但是它不起作用,我也不知道为什么,我尝试在Clion中将libCurl和Http请求分开,它们工作正常,没有任何问题。

#include "netCommon/net_Common.h"

#include <chrono>
#include <thread>
using namespace boost;
typedef asio::ip::tcp ip;



int main() {
    boost::system::error_code ec;
    asio::io_service ios;
    //The website
    std::string host_name = "api-fxpractice.oanda.com";
    std::string port = "443";
    //resolve DNS
    ip::resolver resolver_dns(ios);

    ip::resolver::query query_dns(host_name,port,asio::ip::tcp::resolver::numeric_service);

    ip::resolver::iterator it = resolver_dns.resolve(query_dns,ec);
    //Create a socket
    ip::socket sock(ios);
    //Connect to endpoint
    asio::connect(sock,it);
    if (ec){
        std::cout << " Failed to connect: " << ec.message() << std::endl;
        return ec.value();
    }
    std::cout << "Connected successfully !!! " << std::endl;
    if (sock.is_open()) {
        //Create a stream buffer
        std::stringstream request_stream;
        request_stream << "GET https://api-fxpractice.oanda.com/v3/accounts HTTP/1.1\r\n"
                                              "Authorization: Bearer <my token>\r\n"
                                              "Connection: close\r\n\r\n";
        //Tried to change to Host: https://api-fxpractice.oanda.com,doesn't work either
        const auto request = request_stream.str();
        asio::write(sock,asio::buffer(request));
        using namespace std::chrono_literals;
        std::this_thread::sleep_for(2000ms);
        size_t bytes = sock.available();
        if (bytes > 0) {
            std::vector<char> vBuffer(bytes);
            std::cout << "Have something to read !" << std::endl;
            asio::read(sock,asio::buffer(vBuffer));
            for (auto c: vBuffer) {
                std::cout << c;
            }
        }
    }

它已连接到该站点,但我无法获取任何数据。 它不断向我发送“ HTTP / 1.1 400错误请求”或“普通HTTP请求...发送到HTTPS端口” 我不确定我在做什么错。 :( 非常感谢你们。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?