So senden Sie WCF-ClientCredentials mit Delphi XE

8

Ich habe einen WCF-Service mit einem benutzerdefinierten UserNamePasswordValidator mit einem basicHttpBinding unter Verwendung von HTTPS entwickelt. Es funktioniert hervorragend mit einem .Net-Client, der ClientCredentials verwendet, um den Benutzernamen und das Passwort für die Authentifizierung zu senden.

Ich muss dies jedoch von einem Delphi XE-Client aus aufrufen. Wie sende ich das Äquivalent von .Net ClientCredentials mit Delphi? Ist das möglich? Wenn es ist, wie? Wenn nicht, gibt es Alternativen?

Tks

BEARBEITEN

Unten ist mein clientseitiger Code in .Net:

%Vor%

BEARBEITEN

Ich habe einige Nachforschungen angestellt und konnte die Authentifizierung zwischen Delphi und alten asmx-Webdiensten mit SOAP Hearders durchführen. Ich habe den folgenden Artikel gefunden. Kann ich mit der Technik des Artikels dasselbe Verhalten des alten [WebMethod] [System.Web.Services.Protocols.SoapHeader("SoapHeader")] erreichen?

Ссылка

EDIT BOUNTY

Die get als die richtige Antwort der Bounty markiert, möchte ich in der Lage sein, den Web-Service von Delphi mit WCF Service UserNamePasswordValidator auf der Serverseite aufrufen.

    
Pascal 23.05.2011, 10:21
quelle

2 Antworten

5

Zuerst ist basicHttpBinding über HTTP (nicht HTTPS)

Ссылка

Um einen WFC-Service von Delphi zu verwenden, wird normalerweise eine WSDL aus dem Service erstellt

So erstellen Sie eine einzelne WSDL-Datei von bestehenden WCF-Service?

Ссылка

WCF: Wie erzeugt man ein einzelnes WSDL-Dokument? , ohne WSDL: importieren?

und generieren Sie eine Delphi-Proxy-Klasse, indem Sie diese WSDL in Ihr Delphi-Projekt importieren.

%Vor%

und verwende dann die generierte Delphi-Unit in deinem Delphi-Projekt

Ссылка

Ссылка

Die Parameter, die Sie an Serviceaufrufe senden (Benutzername, Passwort, ClientCredentials usw.), werden in der generierten Delphi-Einheit definiert - sollte kein Problem darstellen, solange Sie sich mit dem Service verbinden können.

    
Sam 23.05.2011 13:36
quelle
1

Vor einigen Wochen musste ich mich auch mit einem WCF-Dienst verbinden. Am Ende habe ich den Client in .net geschrieben und UnmanagedExports verwendet Ссылка

Die DLL kann dann in Delphi wie eine native DLL konsumiert werden

    
doerig 20.06.2011 09:49
quelle