【问题标题】:Poco HTTPClientSession adding headers to HTTPRequestPoco HTTPClientSession 将标头添加到 HTTPRequest
【发布时间】:2017-06-01 08:15:48
【问题描述】:

尝试使用 JSON 向服务器发送 POST 方法。但是,服务器还需要 model, platform and platform version 作为请求的标头。如何将这些标头添加到 HTTPRequest。在 Postman,我可以将其添加到“标题”选项卡中。例如。 Model: Redmi 4 Platform: android。随意编辑以使其他人清楚。 下面是HTTPRequest 创建的我的代码:

Poco::JSON::Object obj;
obj.set("login", "log123");

obj.set("password","pas123");

Poco::Net::HTTPClientSession session("http://hostAddress", 
    80); //giving host name and port number
Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_POST,
        "http://requestAddress","1.1"); //initializing request body
Poco::Net::HTTPResponse response;


std::stringstream ss;
obj.stringify(ss);

request.setContentType("application/json");
request.setContentLength(ss.str().length());

std::ostream& oStream = session.sendRequest(request);// sends request, returns open stream

obj.stringify(oStream);

std::istream& iStream = session.receiveResponse(response);

我试图在https://pocoproject.org/docs/Poco.Net.HTTPRequest.html 找到一些信息。 https://pocoproject.org/docs/Poco.Net.HTTPMessage.html。但没有结果。

【问题讨论】:

    标签: c++ json http poco-libraries


    【解决方案1】:

    只有一种解决方案。它可以帮助他人。

    request.add("string:key","string:value") //In order to add headers to request. 
    

    例如:

    request.add("X-Make","Xiaomi");
    request.add("X-Model","Redmi 4");
    request.add("X-Platform","android");
    request.add("X-Platform-Version","6.0.1");
    

    它对我有用。

    【讨论】:

    • 你知道它是否只接受名称以“x-”开头的标题吗?
    • @BenjaminFoster 我认为是的!这应该。没有限制。它不在您的服务器端
    猜你喜欢
    • 2019-03-29
    • 1970-01-01
    • 2013-04-23
    • 2019-11-08
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    相关资源
    最近更新 更多