HTTP标头字段无法识别

时间:2018-05-05 23:30:08

标签: c++ boost-beast

我正在尝试使用boost :: beast,以便通过HTTP与服务器进行通信。

我正在使用Clientside并希望发送一个至少包含以下标题字段的请求:“X-API-SIGNATURE”。

我正在按如下方式创建请求:

http::request<http::dynamic_body> request;
request.version(11);
request.method(http::verb::get);
request.target("/test");
request.set(http::field::host, host_);
request.set("X-API-KEY", key_);
request.set("X-API-SIGNATURE", signature_);

int count_Header_Field_X_API_SIGNATUR = request.count("X-API-SIGNATURE"); // This is 1.
int count_Header_Field_X_API_Bla = request.count("X-API-BLA"); // This is 0.

我发送请求如下:

        boost::beast::http::async_write(
          *socket_,
          request,
          std::bind(
            &Testclass::on_write,
            shared_from_this(),
            std::placeholders::_1,
            std::placeholders::_2));
    }

之后我从服务器收到响应报告错误:

{"errors":[{"message":"Missing header: X-API-SIGNATURE","code":1,"field":"X-API-SIGNATURE"}],"credits":8}

我不明白为什么服务器没有识别我之前插入请求的“X-API-SIGNATURE”标题字段。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

更新:看起来您正在根据HTTP协议正确地执行所有操作,但是您的请求中有一些特定于服务器不喜欢的内容

signature_的价值是多少?

以下声明的输出是什么?

std::cout << request["X-Api-Signature"] << "\n";