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
[13448] Re:SOAP 기반 DataSnap 사용시... (자답)
브리오 [egsuh] 2475 읽음    2010-10-24 16:41
자답입니다. 크흐흐흐...  (웃는 건지 우는 건지 저도 잘 모르겠지만)

영문 사이트에서 답을 찾았습니다. ----- 아래 내용입니다.

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 사용시... (자답) 브리오 1806 2010/10/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.