2011-11-09 2 views
1

gSoap 라이브러리를 사용하여 WSHttpBinding을 사용하여 WCF 서버와 통신하려고합니다. gSoap 용 WS-Addressing 플러그인에 문제가있는 것 같습니다. #import "wsa5.h"를 사용하여 WS-Addressing 플러그인을 활성화하면 더 이상 컴파일 할 수 없습니다. 이제 soapC.cpp에는 해결되지 않은 기호가 있습니다. 첫 번째 오류는 soap_getelement (soap *, int *)에 있습니다. 오류는 SOAP_TYPE_ wsa5 _IsReferenceParameter입니다. 이것이 gSoap을 사용한 첫 번째 시도입니다. 모든 조언을 부탁드립니다.WCF 및 WSHttpBinding을 사용하여 gSoap을 사용하려고 시도합니다.

gSoap 버전 2.8.4

+0

내 문제는 이것과 관련이 있다고 생각합니다 ... http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.messageversion.soap12wsaddressing10.aspx – IslandCow

답변

1

당신이 할 수있는 것은 -t 매개 변수를 지정하여 wsdl2h 명령에 다음, 당신의 타입 맵 파일에 WSA 파트를 추가합니다.

예 :

wsdl2h -o target.h -t EditedTypemap.dat target.wsdl 

당신은 당신의 gSOAP 디렉토리에서 표준 Typemap.dat을 복사하고 다음과 같이 표시되도록 편집 할 수 있습니다 : 제가 위에서 언급 한 바와 같이

wsa = <http://schemas.xmlsoap.org/ws/2004/08/addressing> 

SOAP_ENV__Header =\ 
#import "wsa.h"\n\ 
struct SOAP_ENV__Header\n\ 
{\n\ 
    mustUnderstand _wsa__MessageID wsa__MessageID 0;\n\ 
    mustUnderstand _wsa__RelatesTo * wsa__RelatesTo 0;\n\ 
    mustUnderstand _wsa__From *  wsa__From  0;\n\ 
    mustUnderstand _wsa__ReplyTo * wsa__ReplyTo 0;\n\ 
    mustUnderstand _wsa__FaultTo * wsa__FaultTo 0;\n\ 
    mustUnderstand _wsa__To   wsa__To  0;\n\ 
    mustUnderstand _wsa__Action  wsa__Action 0;\n\ 
}; 

그런 다음 다시 실행 wsdl2h . 희망이 당신을 위해 작동합니다! gSOAP는 훌륭한 툴킷입니다. 들어가기에는 조금 까다 롭습니다.

+0

또한 작동하지 않는 경우 gSOAP 2.8 디렉토리를 사용하고 있기 때문에 gSOAP 디렉토리 'gsoap-2.8/gsoap/doc/wsa/html/wsa_0.html' 을 볼 수 있습니다. 이 문서는 WSA 플러그인 사용에 대한 명확한 지침을 제공하며 samlpe 코드를 포함합니다. –

+0

감사! 그러나이 코드는 내 typemap.dat를 수정하지 않고 이미 내 soapStub.h 파일에 있습니다. 나는 패킷 캡쳐를했고 WCF 측에서 오는 wsaw 네임 스페이스에 몇 개의 태그가있는 것처럼 보였다. 더 자세히 살펴보면 2006/05 사양을 참조합니다. ( – IslandCow

+0

아하. 내가 gSOAP 클라이언트와 서버를 개발할 때 이것을 염두에두고 gSOAP 2.8을 컴파일하는 데 성공하지 못했습니다. calC++ 샘플. 그래서 여기서부터 gSOAP에 대해 깊이 파고들 것입니다. 내가 사용할 수있는 것을 발견하면, 당신 PM에게 확신을 가질 것입니다. 행운을 빈다. –

관련 문제