【发布时间】:2014-02-03 15:07:49
【问题描述】:
我需要使用 Savon Ruby 客户端来使用 SOAP Web 服务。我认为端点是使用 .NET 框架编写的,事实上,我们目前有一个由服务团队提供的 .NET 客户端库。
使用客户端库时,它可以正常工作并且成功检索数据,但是使用 Savon 客户端时,我得到:
(a:InvalidSecurity) The caller was not authenticated by the service. (Savon::SOAPFault)
问题是,我们已经检查了 SOAP 请求,而且两者似乎都是一样的。唯一的区别是一个是使用 Ruby 完成的,另一个是使用 .NET 完成的。
以下是这两个请求的几个示例: .NET 客户端
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Identity xmlns="http://vauto.com/webservices/Haystak/1.0/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<AccessId>2A6B3F9FC49D1F4388AF7064045D964E</AccessId>
<AccessStamp>2014-01-31T16:46:07.1597194-05:00</AccessStamp>
<Signature>et0KyY1ZnjCM5z7BhQR9Q3Fj7V4=</Signature>
</Identity>
</s:Header>
<s:Body>
<GetVehicles xmlns="http://vauto.com/webservices/Haystak/1.0/">
<request xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<EntityId>TEST01</EntityId>
</request>
</GetVehicles>
</s:Body>
</s:Envelope>
Ruby 客户端:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wsdl="http://vauto.com/webservices/Haystak/1.0/"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header>
<Identity xmlns="http://vauto.com/webservices/Haystak/1.0/"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<AccessId>2A6B3F9FC49D1F4388AF7064045D964E</AccessId>
<AccessStamp>2014-02-03T10:24:50.3690365-05:00</AccessStamp>
<Signature>ykKc5tWCyY9UVb+zw50hfAxOnSA=</Signature>
</Identity>
</env:Header>
<env:Body>
<wsdl:GetVehicles>
<request xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<EntityId>TEST01</EntityId>
<EntityName i:nil="true" />
<HaystakId i:nil="true" />
<Vins i:nil="true"
xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
</request>
</wsdl:GetVehicles>
</env:Body>
Web 服务的 WSDL 如下:
非常感谢任何帮助。我有点迷茫,不知道还要尝试什么才能使用该网络服务。
【问题讨论】:
标签: .net ruby wcf web-services soap