Web引用的身份验证失败 - 返回错误405

时间:2015-11-13 15:52:12

标签: vb.net web-services authentication

我正在尝试建立与Purolator跟踪的Web服务的连接(Purolator是加拿大的一家运输公司)。网络服务网址https://devwebservices.purolator.com/EWS/V1/Tracking/TrackingService.asmx

我已注册,并收到了开发密钥和开发密码。当我在Visual Studio中添加Web引用时,我会反复询问我的用户名和密码。我多次输入它们,最终放弃并向我提供此错误:

  

405 - 不允许使用用于访问此页面的HTTP动词。   无法显示您要查找的页面,因为使用了无效的方法(HTTP动词)来尝试访问。

显然我需要使用基本HTTP身份验证对Web服务进行身份验证,我猜测在Visual Studio中弹出的用户名/密码框不执行该类型的身份验证?

我的开发密钥和密码肯定有效。我在PHP应用程序中尝试过它们,它连接得很好。

知道如何将此Web服务添加到VB.net项目中吗?我还获得了一个本地WSDL文件。我无法将此文件添加为Web引用,但我可以将其添加为服务引用。添加它作为服务引用不会提供对TrackingService()的访问,这是我创建实例所需的。

有什么想法吗?我已经设法在VB.net中使用其他(更简单的)Web引用,但我以前从未使用过身份验证。

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

  1. 在您的网页浏览器中输入URL以获取WSDL(使用您的凭据):https://devwebservices.purolator.com/EWS/V1/Tracking/TrackingService.asmx?wsdl

  2. 复制内容并将文件另存为PurolatorWS.wsdl。

  3. 在项目中添加Web引用,但不是指向URL,而是将其指向您在本地保存的WSDL文件。

  4. 确保在调用任何方法设置正确的URL之前设置URL属性。理想情况下使用Config设置,以便您可以指向不同的环境而无需更改代码。

    Dim objWebService As New PurolatorWS()

    objWebService.Url =" https://devwebservices.purolator.com/EWS/V1/Tracking/TrackingService.asmx"