2014-02-05 55 views
2

我尝试提交此POCO库的演示文稿中给出的简单表单,但服务器收到没有获取或发布的请求。POCO C++简单表单提交示例不起作用

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); 

回答

3

终于在尝试了一下后得到了答案。我在prepareSubmit语句后遗漏了一个form.write语句。我的最终代码像这样发送发布请求以及文件上传请求。

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格式的文件。