참고로 제가 여기 적는 gsoap의 글들은 대부분
http://www.cs.fsu.edu/~engelen/soap.html 의 Document의 User Guide를 참고하고 있습니다.
어떻게 보면 간단히 예제들을 한번 돌려보고 이해한 만큼 적는 것입니다.
오늘은 간단히 gsoap를 이용하여 웹서버의 CGI 를 구현해 보고자 합니다. 물론 gsoap의 기본 예제 그대로... ^^
1. 먼저 다음과 같은 헤더 파일을 만듭니다.
// File: currentTime.h
//gsoap ns service name: currentTime
//gsoap ns service namespace: urn:currentTime
//gsoap ns service location: http://www.yourdomain.com/currentTime.cgi
int ns__currentTime(time_t& response);
==> 이걸 currentTime.h로 저장한 soapcpp2 -S currentTime.h
그럼 다음과 같은 파일들이 생성됩니다.
test$ ls
currentTime.currentTime.req.xml currentTime.h currentTime.wsdl soapC.cpp soapServer.cpp soapStub.h
currentTime.currentTime.res.xml currentTime.nsmap ns.xsd soapH.h soapServerLib.cpp soapcurrentTimeObject.h
2. 그 다음 실제 cgi를 위한 구현부를 만듭니다.
// File: currentTime.cpp
#include "soapH.h" // include the generated declarations
#include "currentTime.nsmap" // include the XML namespace mappings
int main()
{
// create soap context and serve one CGI-based request:
return soap_serve(soap_new());
}
int ns__currentTime(struct soap *soap, time_t& response)
{
response = time(0);
return SOAP_OK;
}
==> 이걸 currentTime.cpp 로 저장한 다음, 아래와 같이 컴파일 합니다.
g++ -o currentTime.cgi currentTime.cpp soapC.cpp soapServer.cpp -lgsoap++
3. 생성된 currentTime.cgi를 테스트 해봅니다.
currentTime$ ./currentTime.cgi < currentTime.currentTime.req.xml
Status: 200 OK
Server: gSOAP/2.8
Content-Type: text/xml; charset=utf-8
Content-Length: 445
Connection: close
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="urn:currentTime"><SOAP-ENV:Body><ns:currentTimeResponse><response>2014-03-10T13:12:18Z</response></ns:currentTimeResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
5. 웹브라우저에서 실행해 보기
==> 대충 아래와 같은 형태로 나타나는데, 왠지 에러 같네요.. 아마도 XML 형태의 Request가 없어서 그런거지.. 계속 하다보면 답이 나오겠죠... ㅎㅎ
'Programming' 카테고리의 다른 글
DHCP Probe 소스 코드 (0) | 2014.11.29 |
---|---|
현재 네트워크에서 DHCP 서버가 동작되고 있는지 확인? (0) | 2014.08.18 |
gsoap (1) (0) | 2014.03.11 |
stub & skeleton 이해하기 (0) | 2013.10.28 |
[C Programming] Struct Hack (0) | 2013.08.15 |