2012-04-09 3 views
7

Я хочу отправить некоторые данные из приложения C++ на сервер с помощью запроса HTTP PUT. Я использую библиотеку poco для работы в сети в своем приложении.HttpRequest Содержимое PUT в библиотеке poco

Я использую этот код:

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

Где установить содержание (файл) поток, когда я отправить запрос? Может ли кто-нибудь показать мне пример с использованием этой библиотеки?

ответ

9

online documentation Цитируя для HTTPClientSession:

SendRequest() возвращает выходной поток, который может использоваться для отправки тела запроса. По завершении отправки тела запроса создайте объект HTTPResponse и передайте его на приемResponse().

Следующий фрагмент кода показывает один из способов, чтобы использовать выходной поток для чтения в файле:

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

У меня такая же проблема с почтовым запросом. Мой сервер не получает тело запроса, когда я пытаюсь отправить его, как вы описали. –

Смежные вопросы