[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