我正在開發一個帶有Poco庫的Web服務器。 當我的服務器在GET模式下接收到帶有表單數據的HTTP請求時,我不知道如何使用類HTMLForm
來顯示收到的對param=value
的列表。與Poco庫獲取URL參數
With request.getURI().getQuery()
我能夠得到完整的字符串。 我想我可以使用標記器以傳統方式拆分字符串。
有沒有更好的方法來使用Poco? 由於
我正在開發一個帶有Poco庫的Web服務器。 當我的服務器在GET模式下接收到帶有表單數據的HTTP請求時,我不知道如何使用類HTMLForm
來顯示收到的對param=value
的列表。與Poco庫獲取URL參數
With request.getURI().getQuery()
我能夠得到完整的字符串。 我想我可以使用標記器以傳統方式拆分字符串。
有沒有更好的方法來使用Poco? 由於
確定,類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;
}
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;
}