Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Prism WSDL importieren (Webreferenz) in D2005 PE ? (https://www.delphipraxis.net/44055-wsdl-importieren-webreferenz-d2005-pe.html)

Phoenix 12. Apr 2005 18:07


WSDL importieren (Webreferenz) in D2005 PE ?
 
Hi,

nur mal ne doofe Frage: Ich hab hier gerade nur die PE, und ich versuche verzweifelt,
den Babelcode-Client hinzubekommen. Leider finde ich nirgends in der PE die Möglichkeit,
den Webservice (also die WSDL - Datei) zu importieren.

Gibt es das Feature hier nicht oder ist es nur verdammt gut versteckt?


Edit: Alternativ.. wenn es wirklich nicht geht.. wäre jemand so nett, und importiert den Webservice hier:
klick! in eine .net DLL und hängt mir die an? Sprache ist ja egal. Es reicht wenn da die eine Klasse drin ist, damit ich hier was demonstrieren kann.

Martin 12. Apr 2005 19:02

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Zitat:

Zitat von Phoenix
Gibt es das Feature hier nicht oder ist es nur verdammt gut versteckt?

Wenn dann sollte sich das Feature überall an der gleichen Stelle befinden. Ob die Personal das kann, weiß ich allerdings nicht.

Phoenix 12. Apr 2005 19:04

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Zitat:

Zitat von Martin
Wenn dann sollte sich das Feature überall an der gleichen Stelle befinden. Ob die Personal das kann, weiß ich allerdings nicht.

Dann kann sie es wohl nicht. 'Add Web Reference' gibts nämlich nicht. :cry:

UweR 13. Apr 2005 08:17

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Hallo Phoenix,

du kannst dir die Webreferenz auch selbst erstellen. Das SDK stellt dir dazu die Funktion wsdl zur Verfügung. Aber nicht erschrecken, das ist ein Kommandozeilentool. Die Parameter hab ich leider nicht greifbar. Mach einfach mal ne DOS-Box auf, gehe ins bin-Verzeichnis deiner SDK (oder leg dir'n Pfad dahin) und gebe mal wsdl ein. Dann kriegst du schön brav alle Parameter aufgelistet. Wenn du alles richtig machst spukt dir wsdl eine Proxy-DLL aus die du einfach als Referenz hinzufügst und fertig ist die Laube.

Phoenix 13. Apr 2005 08:55

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Zitat:

Zitat von UweR
Das SDK stellt dir dazu die Funktion wsdl zur Verfügung. Aber nicht erschrecken, das ist ein Kommandozeilentool. Die Parameter hab ich leider nicht greifbar.

Danke für den Tip. Die Parameter habe ich jetzt schon in der .NET - SDK Doku gefunden. Und soeben liefert meine File-Search nach wsdl.exe auch schon einen treffer.

Interessanterweise ist es nicht im .NET SDK versteckt sondern unter dem Installationspfad meines Visual Studios 2003. *wunder*

Naja, egal. Jetzt weiss ich wo ich heute Abend den Webservice importiert bekomme. Danke!

sakura 13. Apr 2005 09:01

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Eigentlich sollte die PAS Datei ja reichen ;-) Teste mal.

...:cat:...

Phoenix 14. Apr 2005 09:09

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Die sollte tun. Danke ;-)

Zum WSDL.exe : Ist zwar ne nette Sache, gibts aber nicht im normalen .NET SDK, sondern die kommt wohl ausschliesslich beim Visual Studio 2003 mit. Habe hier einen Rechner mit .NET SDK und ohe VS 2003 und hier ist die wsdl.exe leider nicht drauf. Schade drum.

Aber ich glaube ich würde auch so an die .pas kommen:

Mit VS 2003 und WSDL.exe den Webservice importieren -> C# datei.
Die benutzen um den eigenen Quellcode nach Delphi zu schaufeln -> Webservice proxy in .pas.
Wenn das nicht mal bootstrapping ist ;-)

UweR 14. Apr 2005 11:45

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Hallo Phoenix,

Zitat:

Zum WSDL.exe : Ist zwar ne nette Sache, gibts aber nicht im normalen .NET SDK, sondern die kommt wohl ausschliesslich beim Visual Studio 2003 mit. Habe hier einen Rechner mit .NET SDK und ohne VS 2003 und hier ist die wsdl.exe leider nicht drauf. Schade drum.
Dann Frage ich mich nur wie die auf meinen Rechner drauf kommt. Der verfügt über ein .NET SDK von M$ und SharpDevelop. Visual Studio kennt der nur vom Hörensagen.
Hat der besagte Rechner vielleicht einfach nur das Frameworking drauf, ganz ohne SDK?

Zitat:

Mit VS 2003 und WSDL.exe den Webservice importieren -> C# datei.
Die benutzen um den eigenen Quellcode nach Delphi zu schaufeln -> Webservice proxy in .pas.
Wenn das nicht mal bootstrapping ist
Es ist mir zwar bewußt das von Hinten durch die Brust ins Auge immer noch der beste Schuß ist, aber hätte eine einfache Proxy-DLL direkt mit wsdl.exe erstellt nicht gereicht?

CodeX 18. Jul 2005 01:50

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
same problem here.
ich würde gerne die datei GoogleSearch.wsdl einbinden. klappt aber aufgrund fehlender wsdl import funktion nicht (d2005pe).
die von sakura gepostete datei wollte ich ausprobieren, bekomme beim kompilieren aber die meldung:
Zitat:

[Fataler Fehler] borland.converter.pas(20): F1026 Datei nicht gefunden: 'System.Web.Services.Protocols.dcuil'
wie kriege ich das sonst hin?

UweR 18. Jul 2005 11:34

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Hallo CodeX,

woran es bei D2005 klemmt kann ich dir leider nicht sagen da ich .NET-mäßig VS verwende, aber ich würde mir mit wsdl.exe eine entsprechenden Proxy-DLL erstellen. Ich bin mir jetzt nicht ganz sicher ob du direkt eine DLL erstellen kannst, aber du kannst dir ja erst mal ne CS-datei erstellen und dir daraus ne DLL basteln.

Das würde dann ungefähr so aussehen :

Code:
wsdl GoogleSearch.wsdl /o:GoogleSearch.cs
um dir die CS-Proxy-datei zu holen und anschließend kann man noch

Code:
csc /target:library GoogleSearch.cs
ausführen um dir die C#-Datei in ein Assembly zu compilieren ohne die Entwicklungsumgebung konsultieren zu müssen.

CodeX 18. Jul 2005 14:07

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
hallo uwe,

den ersten teil habe ich hinbekommen. den zweiten kann ich nicht nachvollziehen. zu was gehört denn dieses "csc"?`
ich habe weder im .NET SDK noch im delphi verzeichnis eine csc.* datei gefunden.
im endeffekt geht es ja nur darum, eine dll datei zu erhalten, die ich damm in dem projekt nutzen kann, richtig?
wenns an delphi 2005 pe scheitert, wäre es dann möglich, dass du deine geposteten schritte einfach selber machst und mir die dll detei zur verfügung stellst?
http://www.google.com/apis/download.html

danke

Robert_G 18. Jul 2005 15:02

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Nur um es mal zusammenfassend klarzu stellen... ;)

Dein VS03\SDK Order ist der Ordner in dem das VS03 das SDK installier, wenn es vorher noch nicht installiert war.
Da wsdl.exe genau wie xsd.exe (beide interessant für das Thema :) )zum SDK gehören, liegen sie nunmal da...
Egal ob es nun %ProgramFilesDir%Microsoft.Net\... oder Visual Studio 20S03\... heißt. ;)
Wenn du
Code:
wsdl /language:[Namespace.CodeDom] /out:BabelCode.pas [url]http://dotnet.borland.com/babelcode/converter.asmx?WSDL[/url]
Für Namespace und Class name des Delphi.Net Codedoms würde den Reflector nehmen.
*wuppdi* Hast du deinen Proxy.
Ähnlich kannst du xsd.exe für eventuelle XSDs verwenden, die nicht direkt vom WebService angeboten werden, aber dir clientseitig Arbeit abnehmen könnten (Wäre bei dem simplen Service wohl unnötig ;) ).

Ich hätte zwar hier den C# CodeDome gefolgt vom csc verwendet und dann die Assembly statt den Code direkt zu verwenden...
(Bei Delphi & WSDL muss ich immer an den alten WSDL Importer, mit 150 Zeilen Forward declares denken, die trotzdem nicht gehen... :? )
Das schöne an .Net ist ja, dass man eine C# ClassLib prima mit anderen Sprachen nutzen kann. :)

UweR 18. Jul 2005 15:08

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Hallo CodeX

csc.exe ist der C#-Compiler von Microsoft, du findest ihn auch nicht im Framework-SDK, sondern direkt im Framework-Verzeichnis. Er lümmelt sich somit irgendwo unterhalb deines Windows-Verzeichnisses rum. Wenn es jetzt immer noch nicht funzt schick mir ne PN mit deiner Mail-Adresse, dann backe ich dir das Ding zusammen und schicke es dir zu.

CodeX 18. Jul 2005 15:53

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
ok, das mit der dll habe ich jetzt hinbekommen.
nun müsste ich es aber trotzdem noch in mein programm integrieren können :?
dabei versuche ich zum einstieg das hier nachzuvollziehen: http://www.dsdt.info/tutorials/wsclient/?page=4

so habe ich das jetzt einbinden wollen:
Delphi-Quellcode:
function GetGoogleSearchPort(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): GoogleSearchPort; stdcall; external 'GoogleSearch.dll';
er mekert aber bei THTTPRIO und GoogleSearchPort rum. klar, kann er ja auch einfach so nicht kennen.
bei uses müsste noch sowas wie "GoogleSearch" dazu, aber ich habe ja keine GoogleSearch.pas :?

Phoenix 18. Jul 2005 15:56

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Du musst eine normale Referenz auf die .DLL hinzufügen. Das geht über Projekt, Referenz hinzufügen einwandfrei. Und dann kommt freilich in die Uses oben noch die Referenz hinein.

Aber was willst Du mit der external-Deklaration? Die gibts in .NET nicht mehr.

Robert_G 18. Jul 2005 16:27

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Zitat:

Zitat von Phoenix
Du musst eine normale Referenz auf die .DLL hinzufügen. Das geht über Projekt, Referenz hinzufügen einwandfrei. Und dann kommt freilich in die Uses oben noch die Referenz hinein.

Da Wissdel alles mit absoluten namespaces verwendet ist der eintrag in der uses clause unnötig, die Referenzen müssen aber auf jeden Fall gestzt werden.
Zitat:

Zitat von Phoenix
Aber was willst Du mit der external-Deklaration? Die gibts in .NET nicht mehr.

Hmpf? :shock:
  • Falls es wirklich eine Win32 dll ist:
    Würde das in D.Net nicht so aussehen? (Bin mir nicht sicher, aber so hätte ich es in D.Net versucht...)
    Delphi-Quellcode:
    [DllImport('GoogleSearch.dll')]
    function GetGoogleSearchPort(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): GoogleSearchPort; external;
  • Falls es Teil des WebService Proxies ist:
    Dann BITTE: lese dir durch was du da machst...
    Ich finde nichts nerviger als solche Stückelei nur weil jemand zu faul zum Lesen ond/oder Nachdenken ist.

Phoenix 18. Jul 2005 16:36

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Zitat:

Zitat von Robert_G
Zitat:

Zitat von Phoenix
Aber was willst Du mit der external-Deklaration? Die gibts in .NET nicht mehr.

Hmpf? :shock:[list][*]Falls es wirklich eine Win32 dll ist:
Würde das in D.Net nicht so aussehen? (Bin mir nicht sicher, aber so hätte ich es in D.Net versucht...)
Delphi-Quellcode:
[DllImport('GoogleSearch.dll')]
function GetGoogleSearchPort(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): GoogleSearchPort; external;

Ähh. ja. Aber er hat ja mit wsdl und csc dei DLL erstellt. Von daher gehe ich davon aus das er innerhalb von .NET bleibt und da kann er das external gerade mal vergessen. Und wenn er native Win32 DLL's nutzen will... nungut.... ich vermeide die P/Invokes wo es nur geht.. also eigentlich überall. Bei mir gibts keine externals in .NET ;-)

Robert_G 18. Jul 2005 17:08

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Zitat:

Zitat von Phoenix
Bei mir gibts keine externals in .NET ;-)

Da bin ich etwas kompromissbereiter geworden.
Ich habe mir zur Zeit der 2.0 Beta 1 viele Klassen in 1.1 so gebaut, dass sie denen aus 2.0 entsprechen. (Zum Beispiel ein ListView mit Gruppierung)
Natürlich braucht man dazu einiges an Invokes, da ich aber wusste, dass das Projekt nach 2.0 fertig wird... :zwinker:
Auch invokes der GDI+ sind ganz nett wenn man cooles gradiell transparentes Drag'nDrop bauen will, etc. ...
(Solche Mini invokes laufen übrigens auch ganz gut ohne deine Assembly auf FullTrust zu scheuchen. :) )

CodeX 19. Jul 2005 11:40

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
:?
ich versuche, wie gesagt, erstmal nur diese anleitung nachzuvollziehen: http://www.dsdt.info/tutorials/wsclient/?page=4
da ich aber d2005pe habe, kann ich die schritte wie sie dort stehen nicht durchführen, weil zb der WSDL-Import-Assistent fehlt.
deshalb das workaround. bis zur dll bin ich ja jetzt gekommen. nun muss ich noch auf deren funktionen und variablentypen zugreifen können.
dass das mit reinem .NET geschehen soll, steht da nirgends. möglich wäre es natürlich. aber mir wäre es wesentlich lieber, wenn ich eine normale Win32 anwendung erstellen könnte.
ich habe nun also noch die dll über "referenz hinzufügen" importiert und auch mal bei uses aufgenommen.
trotzdem mekert er immer noch bei THTTPRIO und GoogleSearchPort rum.
:?

Phoenix 19. Jul 2005 14:34

Re: WSDL importieren (Webreferenz) in D2005 PE ?
 
Zitat:

Zitat von CodeX
aber mir wäre es wesentlich lieber, wenn ich eine normale Win32 anwendung erstellen könnte.

Gut.. eine Win32-DLL aus einem .NET Programm aufrufen geht ja noch. Aber mir wäre neu, das man ein .NET Assembly (also eine .NET - dll) wie Du es mit WSDL.exe und dem csc erstellt hast in einer normalen Win32-Anwendung verwenden kann. Das geht nicht.

Ich habe dieses Thema ja erstellt, und gaaanz oben steht bei Platform ja auch .NET drin - deswegen gehen wir hier eben auch von .NET aus.

Du hast nun also eine dll - also ein Assembly - das die Schnittstelle zwischen einem .NET - Programm und dem Webservice darstellt. Dieses kannst Du auch nur unter .NET verwenden. Und dafür ist die Vorgehensweise ja bereits erklärt: Assembly in die Referenzliste aufnehmen, in die Uses-Klausel aufnehmen und *wuppdi* kannst Du den Service verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz