2014-04-18 4 views
0

gSoap을 사용하여 C++에서 서비스를 구현했습니다. 난 기존의 여러 WSDL 파일에서 그것을 만들었습니다.gSoap을 사용할 때 C++에서 수신 된 데이터를 해석하는 방법은 무엇입니까?

이제 서비스의 모든 가상 메소드에 정의를 제공해야합니다.

의이 파일 soapMyServiceService.h 하나 명 생성 메소드 선언을 살펴 보자 : 사실

/// 
/// Service operations (you should define these): 
/// Note: compile with -DWITH_PURE_VIRTUAL for pure virtual methods 
/// 

/// Web service operation 'Initialize' (returns error code or SOAP_OK) 

virtual int Initialize(_ns5__Initialize *ns5__Initialize, _ns5__InitializeResponse *ns5__InitializeResponse); 

를, 내가 얻을 기다리고 있었다 :

virtial string Initialize(int var_a , int var_b , string var_c); 

을하지만 지금, 나는 그것을 구현해야 제가 발생있어하고 SOAP 코드 반환 : 나는 다시 얻을 수있는 방법

int MyService::Initialize(_ns5__Initialize *ns5__Initialize, _ns5__InitializeResponse *ns5__InitializeResponse) 
{ 
    // HOW can I get here the received values for that I can able to implement my logic? 
    return SOAP_OK; 
} 

을 (클라이언트가 var_a, var_b 및 var_c에 대해 보낸 값)을 반환 한 다음 문자열에 대해 반환 된 값을 설정하고 동시에 오류 코드를 반환합니다 ...

일반적으로 어떻게 구현합니까? 서비스의 논리?

고맙습니다. 서비스 방법을 구현이면 MyService : 초기화 (_ns5__Initialize * ns5__Initialize, _ns5__InitializeResponse * ns5__InitializeResponse)에서

답변

0

는 마지막 인수는 타입 _ns5__Initialize의 경우에만 하나 개의 입력 매개 변수가 여기에, 나머지 모든 입력 인수입니다 응답 인수 인 아마도 wud는 구조체가됩니다. 멤버에 액세스하면 요청의 모든 입력 매개 변수를 가져옵니다.

+0

사실 당신이 옳습니다. ns5_Initialize의 멤버는 var_a, var_b, var_c이지만 어딘가에 문제가있는 것 같습니다. 위의 구조를 정의한 것은 내가 아니기 때문에 생성되었습니다. 올바른 인수를 갖는 방법이 있다면 더 좋았을 것입니다 ... – Farah

+1

예, wsdl을 통해 생성됩니다. wsdl 메소드 매개 변수의 유형, 이름을 정의하십시오. – user3559050

+0

확인할 정확한 WSDL 태그를 알려주시겠습니까? 정말 고마워! – Farah