使用Poco库获取URL参数

时间:2012-11-14 20:33:38

标签: c++ poco-libraries

我正在开发一个带有Poco库的Web服务器。 当我的服务器在GET模式下收到包含表单数据的HTTP请求时,我不知道如何使用类HTMLForm来显示包含已接收对param=value的列表。

使用request.getURI().getQuery()我可以获得完整的字符串。 我想我可以使用标记器以传统方式拆分字符串。

使用Poco有更好的方法吗? 感谢

2 个答案:

答案 0 :(得分:2)

好的,类 HTMLForm 继承自类 NameValueCollection ,它实现了一个迭代器,可用于遍历“name = value”对。

这是解决我问题的代码:

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

答案 1 :(得分:0)

POCO“NameValueCollection”与Vettrasoft Z Directory几乎完全相同 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;
}