2014-02-06 5 views
0

onvif 미디어 WSDL http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl에 대해 wsdl2h/soap2cpp을 사용하여 코드를 생성하려고합니다. 이 wsdl에는 몇 가지 종속성이 있습니다.인터넷 연결없이 gSOAP 코드 생성기를 실행하는 방법은 무엇입니까?

wsdl2h media.wsdl 
soapcpp2 -2ix media.h -I /usr/share/gsoap/import 

을하지만이 필요 가지고 다음 gSOAP 자주 묻는 질문 http://www.cs.fsu.edu/~engelen/soapfaq.html 읽기

, 드디어 gSOAP 코드 생성기 실행 올바르게 매핑을

trt = "http://www.onvif.org/ver10/media/wsdl" 
tt = "http://www.onvif.org/ver10/schema" 
wsnt = "http://docs.oasis-open.org/wsn/b-2" 
wsrfbf = "http://docs.oasis-open.org/wsrf/bf-2" 
wstop = "http://docs.oasis-open.org/wsn/t-1" 
xop="http://www.w3.org/2004/08/xop/include" 
wsa5 = <http://www.w3.org/2005/08/addressing> 

typemap.dat 다음에 필요한 네임 스페이스를 추출 인터넷 연결. 로컬에 저장된 파일로 빌드하고 싶습니다.

-i는 (고급 옵션)를 가져올 수 없습니다

그래서 나는 다운로드 wsdl2h으로 다운로드 한 것을 :

wsdl2h 도움말

흥미로운 보이는 옵션이 있습니다
  1. http://www.onvif.org/onvif/ver10/schema/onvif.xsd
  2. http://docs.oasis-open.org/wsn/b-2.xsd
  3. ,363,210
  4. http://www.w3.org/2004/08/xop/include
  5. http://docs.oasis-open.org/wsrf/bf-2.xsd

  • http://docs.oasis-open.org/wsn/t-1.xsd
  • 그리고 다음 실행

    wsdl2h -im media.wsdl onvif.xsd b-2.xsd include bf-2.xsd t-1.xsd 
    soapcpp2 -2ix media.h -I /usr/share/gsoap/import 
    

    그러나 이것은 출력 이런 종류의 실패 media.h 코드 참조에서

    ** The gSOAP code generator for C and C++, soapcpp2 release 2.8.7 
    ** Copyright (C) 2000-2011, Robert van Engelen, Genivia Inc. 
    ** All Rights Reserved. This product is provided "as is", without any warranty. 
    ** The soapcpp2 tool is released under one of the following two licenses: 
    ** GPL or the commercial license by Genivia Inc. 
    
    media.h(164): syntax error 
    media.h(163): Syntax error: declaration expected 
    media.h(173): syntax error 
    ... 
    

    구조 ws-addressing에서 왔습니다. 다음으로 나는 xsd를 더 가져 오는 다른 것들을 시도했지만 빠진 의존성을 해결할 방법을 찾지 못했습니다. 아마도 로컬 파일을 빌드하는 적절한 방법이 아닙니다. 어쨌든 은 wsdls과 xsd 파일의 수정을 피하고 싶습니다. 다른 대안으로는 원격 URL을 로컬 URL (예 : Apache CXF)에 매핑하는 카탈로그가 있지만 gSOAP 설명서에서 이와 같은 것을 찾지 못했습니다.

    경험을 공유해 주셔서 감사합니다.

    답변

    0

    gSOAP 사이트 http://www.cs.fsu.edu/~engelen/soapdoc2.html에서 typemap.dat 형식의 일부 문서 만 발견되었습니다. 그러나 일부 네임 스페이스 정의는 "url" 대신 <url>을 사용합니다. 일부 시도 후에 문제의 해결책을 제시하고 <>으로 묶인 네임 스페이스를 정의합니다.

    그래서 나는이 같은 typemap.dat 수정 :

    trt=<http://www.onvif.org/ver10/media/wsdl> 
    tt=<http://www.onvif.org/ver10/schema> 
    wsnt=<http://docs.oasis-open.org/wsn/b-2> 
    wsrfbf=<http://docs.oasis-open.org/wsrf/bf-2> 
    wstop=<http://docs.oasis-open.org/wsn/t-1> 
    xop=<http://www.w3.org/2004/08/xop/include> 
    wsa5=<http://www.w3.org/2005/08/addressing> 
    

    그런 다음 인터넷에 연결하지 않고 media.wsdl에서 코드를 생성 할 수 있습니다 :

    wsdl2h media.wsdl onvif.xsd b-2.xsd include bf-2.xsd t-1.xsd 
    soapcpp2 -2ix media.h -I /usr/share/gsoap/import