Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[13449] Re:Re:SOAP 기반 DataSnap 사용시... (자답)
브리오 [egsuh] 1805 읽음    2010-10-26 13:46
ISAPIAPP 하고 ISAPIThreadPool 순서 바꾸는 것만으로 "text/html.." 에러는 없어집니다.
그런데 Soap Data Module 의 Interface 부분에 method 를 두 개 이상 작성했을 경우 wsdl importing 이 안 되는 것은 해결이 안되네요.  {$DEFINE USE_INDY} uncomment 해 봐도 이건 해결이 안됩니다.

다만 interface 부분, 즉 IDataModule=interface.. 에는 하나만 지정하고, 아래 TDataModule=class.. 에서는 method 여러 개 지정해도 상관없습니다.  그래서 일단 이렇게 해서 wsdl import 한 다음 client 프로그램에서 interface 부분에 method 들을 추가하면 에러 없이 작동은 됩니다.

혹시 제가 뭘 잘못하고 있는 게 있는지.. 알려주시면 감사하겠습니다.


브리오 님이 쓰신 글 :
: 자답입니다. 크흐흐흐...  (웃는 건지 우는 건지 저도 잘 모르겠지만)
:
: 영문 사이트에서 답을 찾았습니다. ----- 아래 내용입니다.
:
: Steven Kamradt said - "I was experiencing this exact error (the -2147417842 error) with the exact symptoms.  Reversing the order from
:
:   ISAPIThreadPool,
:   ISAPIApp
:
: to
:
:   ISAPIApp,
:   ISAPIThreadPool
:
: 이렇게 해 보니 일단 해결은 됐네요. 좀 더 여러 가지 더 해 봐야 알겠지만, 일단 'html.. xml.. 어쩌고 하는 문제는 해결됐습니다. 며칠 째 고민하다 여기 글 쓰고나서 인터넷 들어가서 뒤지니 바로 찾아지네요.  같은 고민하시는 분들 계시면 참조하시길...
:
: 다만 이게 다는 아니고 어떤 사람은 Delphi 의 source 프로그램 자체를 수정해야 한다는 내용도 있군요.
: 그대로 소개하면,
:
:   1.  library path에  $(DELPHI)\Source\Soap  추가
:   2.  \Source\Soap\SoapHTTPTrans.pas 를 열고, backup 하기
:   3.  Line 13 에    //{$DEFINE USE_INDY}  라고 되어 있어야 하고,
:   4.  이를 uncomment, 즉 앞의 // 를 제거하고 {$DEFINE USE_INDY} 하라고 합니다.
:   5.  그런 다음 client 프로그램을 "Rebuild" 해야 한다고 하네요 (Run 버튼 클릭은 안된다고)
:
: 요 글 위에 이게 무서우면 읽지 말라는 말도 빼놓지 않았습니다. 그런데 이게 posting 된 게 2002 년인데, 2009 년에 Delphi 2006 으로 해도 같은 에러가 난다는 post 도 하나 있습니다.
:  
:
:
:
: 브리오 님이 쓰신 글 :
:
: : 안녕하세요.. DataSnap Soap 서버를 작성하다 진행이 되지 않아서 올립니다.
: :
: : Delphi 7 사용하고 있구요,
: :
: : ==== 서버 사이드
: : 1)  New application 을 만듭니다 --- New>Others>Web services tab>SOAP SERVER APPLICATION 으로 해서, 새로운 project 를 하나 생성하고,
: : 2) 여기에 SOAP Data Module 추가합니다. (역시 New>Others>Web services tab>Soap Data Module 을 추가해서, 기 존 프로젝트에 unit 하나가 추가되죠).  Interface 이름을 IDataMod라고 가정합니다.  이 data module 에 dataset (Interbase 하고 dbExpress 에 있는 것 다 해 봤습니다)하고, Dataset provider 를 추가합니다.  DataSet에 query 문 같은 것을 지정합니다.
: :
: : === 클라이언트
: : 3) Client 프로그램 만듭니다. 보통 project 파일 하나 만들고 여기에 SoapConnection 을 하나 추가하고, ClientDataset 하나 추가합니다.
: : 4)  WSDL Importer 를 사용해서 서버의 Interface 를 받아오려 합니다. ...
: :
: : 자, 여기서
: :
: : 1.  위의 4) 번 단계에서 난감한 에러가 발생합니다. 우선
: :     IDataMod = interface
: :     [GUID....]
: :     end;
: :
: :    까지가 자동 생성되죠. 여기서 위의 4)번 Import 를 시도하면 에러가 납니다 .
: :  
: :    그래서 임의로 method 를 하나 추가합니다.
: :
: :     IDataMod = interface
: :     [GUID....]
: :
: :     function DefaultAction : boolean; stdcall;
: :     end;
: :
: :    물론 아래의 TDataMod.. 에서도 정의하고 implementation 부분에서도 작성합니다.
: :
: :    이렇게 하면 에러가 발생하지 않습니다. 그런데 여기에 method 를 하나 이상 추가하면 또 에러가 납니다.
: :
: :    또 이 경우, 하나의 method 만 정의하여 제대로 받아두고, client 프로그램에서 수동으로 추가해 주고 (당연히
: :    서버측에도 똑같이 추가하고) 컴파일 해서 실행하면 상관없이 수행됩니다.
: :
: :
: : 2.   일단 위 단계는 method 하나만 정의를 하고 진행해 봤습니다.
: :
: :      대충 틀을 짠 다음,  클라이언트에서 clientdataset1.Open 이라는 명령을 줍니다. 그런데,
: :
: :     1)  위 서버를 CGI 프로그램, 즉 .exe 파일로 만든 경우에는 에러없이 작동합니다.
: :     2) 그런데 DLL로 compile 하면 에러가 발생합니다.  에러 메시지는,
: :  
: :        "Received content of Invalid Content-Type setting:text/html - SOAP expects text/xml"이라고 뜹니다.
: :
: :  
: : 계속 여기서 막혀서 진행이 되지 않네요. 도움 부탁드립니다.

+ -

관련 글 리스트
13447 SOAP 기반 DataSnap 사용시... 브리오 2150 2010/10/24
13448     Re:SOAP 기반 DataSnap 사용시... (자답) 브리오 2475 2010/10/24
13449         Re:Re:SOAP 기반 DataSnap 사용시... (자답) 브리오 1805 2010/10/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.