2012-11-14 62 views
1

我正在開發一個帶有Poco庫的Web服務器。 當我的服務器在GET模式下接收到帶有表單數據的HTTP請求時,我不知道如何使用類HTMLForm來顯示收到的對param=value的列表。與Poco庫獲取URL參數

With request.getURI().getQuery()我能夠得到完整的字符串。 我想我可以使用標記器以傳統方式拆分字符串。

有沒有更好的方法來使用Poco? 由於

回答

2

確定,類HtmlForm控件從類NameValueCollection中,實現通過對「名稱=值」移動有用的迭代器繼承。

這是解決我的問題代碼:

string name; 
string value; 
HTMLForm form(request); 

NameValueCollection::ConstIterator i = form.begin(); 

while(i!=form.end()){ 

    name=i->first; 
    value=i->second; 
    cout << name << "=" << value << endl << flush; 
    ++i; 
} 
0

POCO 「的NameValueCollection」 幾乎是相同的Vettrasoftž目錄 namevalue_set_o類,這是記錄在這裏:

http://www.vettrasoft.com/man/zman-strings-namevalue_set.html

這至少提供了一些示例代碼。我遇到的最大問題是 POCO缺少關於如何使用它的示例或解釋(包括 參考手冊頁)。對於Z Directory的名稱值集合類,與上面相同的源代碼如下所示:

using namespace std; 

int i, ie; 
namevalue_set_o nv; 
string_o s = "FOO=BAR;DATE=\"12/21/2012\";HOST=vertigo;OSTYPE=\"Windows Vista\""; 
nv.load_from_string(s); 
i = 0; 

while (i < nv.size()) 
{ 
    const namevalue_pair_o &item = nv.get(i, &ie); 
    if (!ie) 
    cout << item.name() << "=" item.value() << endl << flush; 
    ++i; 
}