[DUG] SOAP

David Moorhouse delphi at moorhouse.net.nz
Tue Dec 4 10:54:31 NZDT 2007


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
>>
>>
>>
>>   




More information about the Delphi mailing list