[DUG] SOAP

Robert martin rob at chreos.co.nz
Tue Dec 4 11:07:19 NZDT 2007


Great (Irony).

So far I have spent more time fighting the Code gear site than writing code!

Thanks for you help anyway. 

Rob Martin
Software Engineer

phone +64 03 377 0495
fax   +64 03 377 0496
web www.chreos.com

Wild Software Ltd



David Moorhouse wrote:
> LOL - I misread your request.  And now I'm having the same trouble - can
> login to the cdn site but keep getting redirected back to the login page.
> Looks like something wrong with the codecentral site ?
>
> Cheers
>
> D
>
>
> On Tue, 04 Dec 2007 10:24:19 +1300, you wrote:
>
>   
>> Thanks David
>>
>> I could read the article but cant download the example (from the 'here' 
>> link).  Could you possibly download it and email it to me off list ?
>>
>> Rob Martin
>> Software Engineer
>>
>> phone +64 03 377 0495
>> fax   +64 03 377 0496
>> web www.chreos.com
>>
>> Wild Software Ltd
>>
>>
>>
>> David Moorhouse wrote:
>>     
>>> HTH
>>>
>>> Cheers
>>>
>>> D
>>>
>>>
>>> Building a stand-alone Web service with Indy
>>>
>>>     Abstract: This article shows how to build a Web service using Indy and
>>> Delphi 6. By Dave Nottage.
>>>
>>> This article explains how to fit Indy into Delphi 6's Web services (SOAP)
>>> support. For more on creating Web services, please refer to Nick Hodges's
>>> excellent Borland Community article, Shakespeare on the Web.
>>>
>>> I can't remember exactly why I built the application that follows. For
>>> whatever reason, I needed to find an easy way of building a stand-alone Web
>>> service -- that is, one that doesn't require a Web server.
>>>
>>> A recent post in the borland.public.delphi.webservices.soap newsgroup and a
>>> gentle hint from elsewhere have prompted me to drag out the code, clean it
>>> up, and brush a few of the cobwebs out of my head. This article is the
>>> result.
>>> Fitting Indy into WebBroker
>>>
>>> The components in Delphi 6's SOAP support are based around WebBroker.
>>> Typically in a WebBroker application, a component that implements
>>> IWebDispatch lives on a TWebModule. In the case of a SOAP server, it's
>>> THTTPSoapDispatcher:
>>> SOAP Web Module
>>>
>>> The major goal here was to leave as much of this default arrangement intact
>>> as possible. So instead of attempting to fiddle with the SOAP components, I
>>> stuck with WebBroker.
>>>
>>> Looking at the WebBroker architecture, I noted that the underlying
>>> technology is independent of the type of application. ISAPI, CGI, whatever
>>> -- it doesn't matter. The basic principles are the same: You have a request
>>> from the client (TWebRequest) and a response from the server
>>> (TWebResponse). 
>>>
>>> Indy's Request/Response mechanism of TIdHTTPServer is similar, so I figured
>>> I could simply create wrapper classes similar to those used in ISAPI and
>>> CGI applications, and hook them into the CommandGet method of TIdHTTPServer
>>> so requests would be handled.
>>>
>>> The result is the code in IndyApp.PAS and IndyHTTP.PAS (which correspond to
>>> xxxApp and xxxHTTP for ISAPI, CGI, COM, and son on). Note that not all of
>>> the methods of TWebRequestIndy and TWebResponseIndy have complete
>>> implementations. Perhaps someone with more knowledge of Indy than I have
>>> can finish it off. <g>
>>> Turning a WebAppDebugger app into Indy
>>>
>>> Since there is no "Indy SOAP Server Application" wizard (perhaps I'll find
>>> time to build one later), and the aim was to create a stand-alone
>>> executable, the most logical choice was to start with the SOAP Server
>>> Application wizard (File | New | Other, WebServices tab, SOAP Server
>>> Application):
>>> Gallery - Web Services
>>>
>>> ...and choose Web App Debugger executable. That's just what I did. I used a
>>> dummy CoClass name, because the code generated for it would be removed
>>> later:
>>> New SOAP Server
>>>
>>> In the main form unit's implementation:
>>>
>>> unit Unit1;
>>>
>>> interface
>>>
>>> uses
>>>   SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
>>>
>>> type
>>>   TForm1 = class(TForm)
>>>   private
>>>     { Private declarations }
>>>   public
>>>     { Public declarations }
>>>   end;
>>>
>>> var
>>>   Form1: TForm1;
>>>
>>> implementation
>>>
>>> uses ComApp;
>>>
>>> {$R *.DFM}
>>>
>>> const
>>>   CLASS_ComWebApp: TGUID = '{44139136-EFD0-4044-8A3C-13484508A833}';
>>>
>>> initialization
>>>   TWebAppAutoObjectFactory.Create(Class_ComWebApp, 'Dummy', 'Dummy
>>> Object');
>>>
>>> end.
>>>
>>> I removed the uses clause, the CLASS_ComWebApp const, and the
>>> initialization section. The conditional define: {$APPTYPE GUI} was not
>>> required, so that was removed also. In the uses clause, I changed COMApp to
>>> IndyApp, and the DefaultPort property was set to what I wanted (1024)
>>> before Application.Initialize, with Active set to true once the main form
>>> had been created.
>>> Service, please
>>>
>>> Using the Invokable Wizard (which I co-authored with Borland), I created a
>>> simple interface and invokable class. The implementation unit (DemoImpl)
>>> was added to the project's uses clause (to make sure that the invokable
>>> class is registered when the app runs), and I was away!
>>>
>>> I ran the app, pointed my browser at http://localhost:1024/wsdl/IDemo, and
>>> lo and behold, the WSDL was published!
>>>
>>> Thanks to my hours of blood, sweat and tears, you too can have your own
>>> stand-alone Web service application, all without the aid of .NET -- or even
>>> a Web server.
>>>
>>> Refer to Nick Hodges's article for advice on how to create a Web service
>>> client to access the Web service.
>>>
>>> The code for this article can be downloaded here.
>>>
>>> Dave Nottage is CEO of Pure Software Technology, a software development
>>> company specializing in Delphi. He can be reached at dave at b3.com.au and the
>>> company's website is http://www.puresoftwaretech.com
>>>
>>> Published on: 8/17/2001 12:00:00 AM
>>>
>>>
>>>
>>>
>>> On Tue, 04 Dec 2007 09:14:06 +1300, you wrote:
>>>
>>>   
>>>       
>>>> Hi
>>>>
>>>> I am looking at writing a standalone SOAP server using INDY and Delphi 
>>>> 2007.  I have been looking for some examples / guides and not found much 
>>>> (any pointers would be appreciated).  However I have found an example on 
>>>> the codegear site but I just cannot download it.  Whenever I click it it 
>>>> asks me to log in (which I am).  Trying to log in again just leaves me 
>>>> on the log in page.  Could someone pleeeeaassee try and download this 
>>>> for me (and email it through to me).
>>>>
>>>> The Link is http://dn.codegear.com/article/27513  (There is a 'here' 
>>>> link at the bottom of the page.
>>>>
>>>> Thanks V Much
>>>>
>>>> -- 
>>>> Rob Martin
>>>> Software Engineer
>>>>
>>>> phone +64 03 377 0495
>>>> fax   +64 03 377 0496
>>>> web www.chreos.com
>>>>
>>>> Wild Software Ltd
>>>>
>>>> _______________________________________________
>>>> NZ Borland Developers Group - Delphi mailing list
>>>> Post: delphi at delphi.org.nz
>>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>>> Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject: unsubscribe
>>>>     
>>>>         
>>> _______________________________________________
>>> NZ Borland Developers Group - Delphi mailing list
>>> Post: delphi at delphi.org.nz
>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>> Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject: unsubscribe
>>>
>>>
>>>
>>>   
>>>       
>
>
> _______________________________________________
> NZ Borland Developers Group - Delphi mailing list
> Post: delphi at delphi.org.nz
> Admin: http://delphi.org.nz/mailman/listinfo/delphi
> Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject: unsubscribe
>
>
>
>   


More information about the Delphi mailing list