8

我已经使用 HTTPS开发UserNamePasswordValidator了一个自定义的 WCF 服务。basicHttpBinding它适用于 .Net 客户端,使用 ClientCredentials 发送用户名和密码以进行身份​​验证。

但是,我需要从 Delphi XE 客户端调用它。如何使用 Delphi 发送等效的 .Net ClientCredentials?那可能吗?如果是,怎么做?如果不是,是否有替代方案?

Tks

编辑

以下是我在 .Net 中的客户端代码:

EndpointAddress oTransac = new EndpointAddress(GetAddress());
using (WebServiceClient oClient = new WebServiceClient ("httpbasic", oTransac))
{
  oClient.ClientCredentials.UserName.UserName = "username";
  oClient.ClientCredentials.UserName.Password = "password";
  oClient.DoStuff();
}

编辑

我一直在做一些研究,我已经能够使用 SOAP Hearders 在 Delphi 和旧的 asmx Web 服务之间进行身份验证。我找到了下面的文章。我能否[WebMethod] [System.Web.Services.Protocols.SoapHeader("SoapHeader")]使用文章的技术实现与旧版本相同的行为?

http://weblogs.asp.net/paolopia/archive/2008/02/25/handling-custom-soap-headers-via-wcf-behaviors.aspx

编辑赏金

得到标记为赏金的正确答案,我希望能够使用UserNamePasswordValidator服务器端的 WCF 服务从 Delphi 调用 Web 服务。

4

2 回答 2

5

首先,basicHttpBinding 通过 HTTP(不是 HTTPS)

http://msdn.microsoft.com/en-us/library/ms731361.aspx

从 Delphi 使用 WFC 服务通常是通过从服务生成 WSDL 来完成的

如何从现有的 WCF 服务创建单个 WSDL 文件?

http://social.msdn.microsoft.com/Forums/en/wcf/thread/fc2c5074-1116-4f92-a972-01bb3a142535

WCF:如何在没有 WSDL:import 的情况下生成单个 WSDL 文档?

并通过将该 WSDL 导入您的 Delphi 项目来生成 Delphi 代理类。

>wsdlimport.exe service.wsdl

然后在你的 Delphi 项目中使用生成的 Delphi 单元

http://www.drbob42.com/examines/examinB9.htm

http://edn.embarcadero.com/article/36962

您发送到服务调用的参数(用户名、密码、ClientCredentials 等)将在生成的 Delphi 单元中定义 - 只要您可以连接到服务,应该没问题。

于 2011-05-23T13:36:58.043 回答
1

几周前,我还必须连接到 WCF 服务。我最终在 .net 中编写客户端并使用 UnmanagedExports https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports

然后可以像使用本机 dll 一样在 Delphi 中使用该 dll

于 2011-06-20T09:49:22.287 回答