簡體   English   中英

從Poco http客戶端獲取響應字符串

[英]Get response from Poco http client to string

我有一個小代碼,它使用Poco庫向本地Web服務發送POST HTTP調用並獲得響應。 目前我在cout終端上打印了回復消息。

#include "Poco/Net/HTTPClientSession.h"
#include "Poco/Net/HTTPRequest.h"
#include "Poco/Net/HTTPResponse.h"
#include "Poco/StreamCopier.h"
#include <iostream>

using namespace std;
using namespace Poco::Net;
using namespace Poco;

int main (int argc, char* argv[])
{
    HTTPClientSession s("localhost", 8000);
    HTTPRequest request(HTTPRequest::HTTP_POST, "/test");
    s.sendRequest(request);

    HTTPResponse response;
    std::istream& rs = s.receiveResponse(response);
    StreamCopier::copyStream(rs, cout);

    return 0;
}

如何將響應消息存儲在char數組或字符串中,而不是打印或存儲在文件中?

我不熟悉Poco,但你可以用std::ostringstream替換std::cout ,然后將字符串拉出來。

所以不要這樣做:

StreamCopier::copyStream(rs, cout);

使用此代碼

#include <sstream>
// ...
std::ostringstream oss;
StreamCopier::copyStream(rs, oss);
std::string response = oss.str();
// use "response" ...

或者,更直接地,您可以使用copyToString直接復制到std::string ,從而節省至少一個分配+副本:

std::string responseStr;
StreamCopier::copyToString(rs, responseStr);
// use "responseStr" ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2025 STACKOOM.COM