2012-11-14 6 views
1

Poco 라이브러리가있는 웹 서버를 개발 중입니다. 내 서버가 GET 모드에서 양식 데이터가있는 HTTP 요청을 받으면 HTMLForm 클래스를 사용하여 수신 된 쌍이있는 목록을 표시하는 방법을 모르겠다 param=value.Poco 라이브러리로 URL 매개 변수 가져 오기

request.getURI().getQuery()으로 전체 문자열을 가져올 수 있습니다. 나는 tokenizer를 사용하여 전통적인 방식으로 문자열을 분리 할 수 ​​있다고 생각합니다.

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 Z 디렉토리 namevalue_set_o 클래스와 거의 동일합니다 :

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

하는 최소한 샘플 코드를 제공합니다. 내가 가진 가장 큰 문제는 POCO는 예제 사용법에 대한 설명이나 설명이 부족합니다 ( 참조 설명서 페이지 포함). Z 디렉토리의 이름 - 값 집합 클래스의 경우 위와 동일한 소스 코드는 다음과 같습니다.

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; 
} 
관련 문제