我正在尝试从c#中使用PHP SOAP服务,并在VS 2010中创建一个类包装器


I am trying to consume a PHP SOAP service from C# and create a class wrapper in VS 2010

我的任务是为SOAP服务创建一个类包装器,其思想是您将能够将其视为常规类。这样做的主要原因是SOAP服务的WDSL只包含一个方法,它有5个参数,它只是一种面向对象的方式,所以你必须非常了解所有的方法调用,要记住它们有点困难。

好的,所以我已经尝试添加一个web引用,现在web引用现在可以添加为服务引用在VS 2010。你点击"添加高级服务参考",它就会添加一个服务参考。太好了。不幸的是,如果我尝试从类访问它,我不能。

我可以构建一个控制台应用程序并将代码放在主过程中并访问SOAP服务的方法,但是当我添加对类库的引用时,智能感知将不允许我选择任何东西。我将像这样实例化一个实例:

SOAPService.webServiceService ws = new SOAPService.webserviceService();
ws.

,然后智能感知拒绝启动。如果我在网页项目或主机应用程序中做同样的事情,那么我就可以很好地访问它。我添加了名称空间,我做了各种各样的事情。此外,我可以添加一个web引用,并获得一个DISCO文件,每当我创建一个web项目。

好的,当我在这个主题上时,我还需要将凭据传递到PHP中的web服务。

问题是,在过去,我会创建一些。net系统凭据并添加这些,如果我连接到另一个。net服务,它通常会通过。

我应该如何将它们发送到PHP web服务?我总是得到无效的用户名/密码组合错误或信封格式错误类型

谢谢B先生

所以智能感知不工作,但如果你添加的方法,并试图使用它是工作,还是产生一个错误?

关于诊断身份验证问题,尝试使用fiddler查看正在发送的SOAP消息,并查看应答。是否有其他软件可以连接并验证该服务?使用fiddler查看SOAP消息,并比较它们,看看头是否不同等。

我通常会这样做,

using (Service service = new Service())
{
    service.ClientCredentials.Windows.ClientCredential.Domain = "domain";
    service.ClientCredentials.Windows.ClientCredential.Password = "password";
    service.ClientCredentials.Windows.ClientCredential.UserName = "username";
}

关于服务是否正常工作,如果您有任何问题,您可以看到SOAP消息,它通常会给您一个更清晰的消息。

我知道在IIS中,你可以打开失败的请求处理,这也让你了解服务器端发生了什么,也许你也有某种形式的日志记录为你的php服务?