2012-04-09 20 views
7

我想使用HTTP PUT請求將一些數據從C++應用程序發送到服務器。我在我的應用程序中使用poco庫進行網絡連接。poco庫中的HttpRequest PUT內容

我使用這個代碼片段:

HTTPClientSession session(_uri.getHost(), _uri.getPort()); 
HTTPRequest req(HTTPRequest::HTTP_PUT, path, HTTPMessage::HTTP_1_1); 

在哪裏設置的內容(文件)流時,我發送請求?任何人都可以使用這個庫給我看一個例子嗎?

回答

9

引述online documentationHTTPClientSession

sendRequest將()將返回可以被用來發送請求主體的輸出流。完成發送請求主體後,創建一個HTTPResponse對象並將其傳遞給receiveResponse()。

下面的代碼片段顯示了使用輸出流中讀取文件的一種方法:

try { 
    Poco::Net::HTTPClientSession session("www.example.com"); 
    Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_PUT, "/foo"); 

    std::ostream& os = session.sendRequest(request); 

    std::ifstream ifs("thefile.txt"); // missing: error handling 
    Poco::StreamCopier::copyStream(ifs, os); // that's it :-) 

    Poco::Net::HTTPResponse response; 
    std::istream& rs = session.receiveResponse(response); 
    // Do something with rs... 

} catch (Poco::Exception& e) { 
    std::cout << e.displayText() << std::endl; 
} 

而且,看看在slides for POCO Network programming。除其他外,它們顯示如何使用HTTPClientSession

POCO文件簡潔明瞭;閱讀它是值得的。

+0

我與發佈請求有同樣的問題。當我嘗試按照您所描述的方式發送請求時,我的服務器沒有收到請求的主體。 – 2016-08-28 12:33:17