在 proxygen 中获取 headers 值

getting headers value in proxygen

我正在使用 proxygen 制作一个简单的网络服务器。我被限制使用 proxygen.I 我正在使用 proxygen 默认回显服务器示例 我想在每次向服务器发送请求时打印 header 值。下面是我认为我应该 modify.but 我不确定的代码:

#include "customHandler.h"
#include <iostream>
#include <proxygen/httpserver/RequestHandler.h>
#include <proxygen/httpserver/ResponseBuilder.h>
#include <proxygen/lib/http/HTTPMessage.h>
#include <proxygen/lib/http/HTTPMethod.h>
using namespace std;
using namespace proxygen;

namespace EchoService {
EchoHandler::EchoHandler(EchoStats* stats): stats_(stats) {
}

void EchoHandler::onRequest(std::unique_ptr<HTTPMessage> headers) noexcept {
  //------------------HERE TO MODIFY I THINK-------------------//

}

void EchoHandler::onBody(std::unique_ptr<folly::IOBuf> body) noexcept {
  if (body_) {
    body_->prependChain(std::move(body));
  } else {
    body_ = std::move(body);
  }
}
/*
.header("Request-Number",
            //this sets the request number
            folly::to<std::string>(stats_->getRequestCount()),"test-b")*/

void EchoHandler::onEOM() noexcept {
  ResponseBuilder(downstream_)
    .status(200, "OK")

    //Response is set Here...........ex-> .body(std::move("some Response object"))
    .body(std::move(body_))
    .sendWithEOM();
}

void EchoHandler::onUpgrade(UpgradeProtocol protocol) noexcept {
  // handler doesn't support upgrades
}

void EchoHandler::requestComplete() noexcept {
  delete this;
}

void EchoHandler::onError(ProxygenError err) noexcept {
  delete this;
}

}

如果我错了请指正。

试试这个:

void EchoHandler::onRequest(std::unique_ptr<HTTPMessage> headers) noexcept
{   
    HTTPHeaders head = headers->getHeaders();
    head.forEach([&] (const string& header, const string& val) {
          cout << header << ": " << val<<endl;
    });
}