안녕하세요! gSOAP 관련 질문입니다.

qkqk2의 이미지

안녕하십니까...

제가 gSOAP을 이용하여 Qt(C++)로 웹서비스에 접속하여 데이터를 주고 받는것을 진행했습니다.

현재 WebService1은 제가 Number 를 주면 WebService1측에서 Number에 해당하는 정보들은 저한테 줍니다.
여기서 _ns1__Submit 이라는 클래스가 있는데.
이 클래스는 제가 웹서비스에 전송할 데이터를 멤버로 가지고있습니다. (Number) 하나를 가지고 있음.
따라서 _ns1__Submit 이라는 클래스의 멤버에 Number를 저장하고
Proxy에 있는 함수인 Submit 이라는 것에 _ns1__Submit을 넘겨주면 됩니다.

여기까지는 순조롭게 진행 되었으나.

WebService2가 Open되었습니다.
webService2는 이번에는 제가 Number에 해당하는 많은 정보들을 submit하면 결과 Result를 받는 웹서비스입니다.

gSOAP을 이용하여 WebService2 에 해당하는 스텁헤더,프록시 등등 웹서비스에 필요한
파일들을 만들고 WebService1에서 했던것처럼 제가 현재 작업하고있는 라이브러리에 파일들을 추가하였습니다.

여기서 , WebService2에도 _ns1__Submit 이라는 클래스가 있는데..
WebService2의 _ns1__Submit에는 전송할 데이터를 멤버로 가지고있습니다
(WebService1 에는 Number만 전송하면 되므로 Number멤버 하나만 가지고있지만 , WebService2에는 여러 정보들을
보내야 하므로 여러 멤버들을 가지고있음 )

여기서 문제입니다....
일단 gSOAP으로 만들어진 파일중 nsmap 파일 (네임스페이스 이름이 충돌납니다)
=> webService1 과 webService2 네임스페이스 이름이 같음.

또, 전송하고 받는 멤버 / 개수만 다를뿐 이름들이 같습니다.

그러므로 2가지 웹서비스를 한 라이브러리에서 진행 할 때 이름들이 충돌이 납니다.

구글링으로 알아본결과.
https://stackoverflow.com/questions/28692807/gsoap-with-multiple-wsdls
의 내용처럼 해 보았는데. _ns1__Submit 의 내용이 추가가되는것이 아니고 덮어쓰여져서 결국은 webService1에 해당하는 _ns1__Submit 멤버만 가지고있습니다.

따라서 webService2에 전송할 데이터들을 _ns1__Submit에 담을수가 없습니다.

2가지 웹서비스를 합쳐서 gSOAP의 header,cpp,nsmap 파일들을 만드는 방법은 없는건가요...?

구글링으로 한계가있는거같아서 질문드립니다.

감사합니다.!

shint의 이미지

//
gSOAP
Qt(C++)로 웹서비스에 접속하여 데이터를 주고 받는것을 진행

//
WebService1 <-------- Number 멤버 하나
WebService1 Number에 해당하는 정보 ----------->

//

class _ns1__Submit
{
   웹서비스에 전송할 데이터 - (Number) 하나
};

_ns1__Submit ns;
ns.Number = 000;
 
Proxy.Submit(_ns1__Submit);      <------->      WebService2

//

WebService2 ws;
ws.Open();

//
gSOAP ----> WebService2 (스텁헤더,프록시 등등 웹서비스에 필요한 파일들 생성)

//
WebService1 ---- (라이브러리에 파일들을 추가)

//
WebService2 - class _ns1__Submit{ 전송할 데이터를 여러 멤버들 }

//
gSOAP으로 만들어진 파일중 nsmap 파일 (네임스페이스 이름이 충돌납니다)
=> webService1 과 webService2 네임스페이스 이름이 같음.

//
전송하고 받는 멤버 / 개수만 다를뿐 이름들이 같습니다.

//
2가지 웹서비스를 한 라이브러리에서 진행 할 때 이름들이 충돌이 납니다.

//
구글링으로 알아본결과.
https://stackoverflow.com/questions/28692807/gsoap-with-multiple-wsdls

_ns1__Submit 의 내용이 덮어쓰여져서. webService1에 해당하는 _ns1__Submit 멤버만 가지고있습니다.

webService2 에 전송할 데이터들을 _ns1__Submit에 담을수가 없습니다.

2가지 웹서비스를 합쳐서 gSOAP의 header,cpp,nsmap 파일들을 만드는 방법은 없는건가요...?

//

namespace WebService1
{
    class _ns1__Submit
    {
        웹서비스에 전송할 데이터 - (Number) 하나
    }
};
 
namespace WebService2
{
    class _ns1__Submit
    {
        웹서비스에 전송할 데이터 - (Number) 여러 멤버
    }
};

//-------------------------------
//
// 비슷한 내용이 보이네요. ㅇ_ㅇ;;
//
//-------------------------------

//
gsoap 사용 시 namespace/xml tag 문제
https://kldp.org/node/137244

gSOAP-2.7 과 gSOAP-2.8 차이에 의한 SOAP stub 컴파일 문제 - 해결되었습니다.
https://kldp.org/node/155400

php pear로 닷넷서버와 SOAP통신하기.
https://kldp.org/node/51665

pear에서 생성하는 xml은

위의 방식으로 생성하게 됩니다만,

닷넷서버가 알아들을라면

위와 같이 해야합니다.

soap library와 xml parser 질문이요
https://kldp.org/node/105278

How to combine multiple clients and servers into one executable?
http://alien.cern.ch/cache/gsoap2.7-2.7.10/gsoap/samples/link++/README.txt

Thread: How 2 Combine Multiple Client/Server implementations into one executable in gSOAP
http://forums.codeguru.com/showthread.php?371355-How-2-Combine-Multiple-Client-Server-implementations-into-one-executable-in-gSOAP

#346 Passing multiple WSDL files to wsdl2h doesn't work
https://sourceforge.net/p/gsoap2/bugs/346/

ONVIF Device Manager - SOAP CAM 프로그램
https://sourceforge.net/projects/onvifdm/

8 The wsdl2h WSDL and Schema Importer
https://www.cnblogs.com/Arrays/archive/2013/06/11/3131873.html

android / platform / external / gsoap / master / . / wsdl / README.txt
https://android.googlesource.com/platform/external/gsoap/+/master/wsdl/README.txt

SOAP Code Generation - SOAP UI 프로그램
Code Generation Tools for Web Services
https://www.soapui.org/soap-and-wsdl/soap-code-generation.html

CurrencyConvertor: How to Use gSOAP and Webservices, Part One
https://www.codeproject.com/Articles/17958/CurrencyConvertor-How-to-Use-gSOAP-and-Webservices

wsdl을 .h로 만들고.
wsdl2h -o WSCurrencyConv.h CurrencyConvertor.wsdl
.h를 Inport 해서. xml 생성 ??
soapcpp2 -ID:\gsoap-win32-2.7\Import WSCurrencyConv.h

gsoap header generation => wsdl mismatch
https://forums.parasoft.com/discussion/2363/gsoap-header-generation-wsdl-mismatch

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.