如何通过卡萨布兰卡检索响应头?

时间:2015-06-01 15:09:51

标签: c++ casablanca

wchar_t token[50];  
http_client client(L"https://example.com/dir/");
    http_request request;
    std::stringstream ReqBody;
    std::string ReqBodyS;

    ReqBody << "login=" << TB1T << "&pass=" << TB2T;
    ReqBodyS = ReqBody.str();

    request.set_body(ReqBodyS);
    request.set_method(methods::POST);
    request.headers().set_content_type(U("application/x-www-form-urlencoded"));

    client.request(request).then([](http_response response) {       
        if (response.status_code() == status_codes::OK)
        {
            //
        }
    });

响应如

Connection: keep-alive
Content-type: text/html
SomeHeader: something here

如何从名称为SomeHeader的标题添加文本到令牌? 我想从someheader获取令牌文本

1 个答案:

答案 0 :(得分:0)

这是一篇旧文章,但是我会为您提供帮助,我想您很久以前就已经解决了您的问题,但是如果没有解决,或者如果有人遇到了同样的问题,请在这里进行一些解释。

如果您想使用C ++ Rest SDK(也称为Casablanca)来获取请求的标头:

您获得了带有标头的标头属性,按照惯例,它是“授权”。 为了获得令牌,仅是一个基本示例,您只需执行以下操作:

auto authorization = utility::conversions::to_utf8string(request.headers()[header_names::authorization]);

我为变量的类型写了auto,但是它可以是std :: string。

现在,如果要向请求中添加标头,例如“授权”,则可以像其他标头参数一样编写它。 这里是一个例子:

http_response response;
response.set_status_code(200);
response.headers().add(U("Authorization"), U("your token"));

希望它可以帮助您和其他遇到类似问题的人。