POCO C++ простая форма отправить образец не работает
Я попытался отправить эту простую форму, представленную в презентации библиотеки POCO, но сервер не получает запросы get или post.
HTTPClientSession s("localhost");
HTTPRequest request(HTTPRequest::HTTP_POST, "/fileupload/upload_file.php");
HTMLForm form;
form.add("entry1", "value1");
form.prepareSubmit(request);
s.sendRequest(request);
Poco::Net::HTTPResponse res;
std::istream &is = s.receiveResponse(res);
Poco::StreamCopier::copyStream(is, std::cout);
1 ответ
Решение
Наконец получил ответ после попытки немного. Я пропустил оператор form.write после оператора prepareSubmit. Мой окончательный код выглядит следующим образом: он отправляет как почтовые запросы, так и запросы на загрузку файлов.
HTTPRequest request(HTTPRequest::HTTP_POST, "/fileupload/upload_file.php", HTTPMessage::HTTP_1_1); HTMLForm form; form.setEncoding(HTMLForm::ENCODING_MULTIPART); form.set("entry1", "value1"); form.set("entry2", "value2"); form.addPart("file", new FilePartSource("/home/abc/Pictures/sample.png")); form.prepareSubmit(request); HTTPClientSession *httpSession = new HTTPClientSession("localhost"); httpSession->setTimeout(Poco::Timespan(20, 0)); form.write(httpSession->sendRequest(request)); Poco::Net::HTTPResponse res; std::istream &is = httpSession->receiveResponse(res); Poco::StreamCopier::copyStream(is, std::cout);
Соответствующий сервер загрузки использует стандартный код PHP для загрузки файлов форм HTML.