2014-02-05 80 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格式的文件。