【发布时间】:2018-07-26 13:32:06
【问题描述】:
以前从 PowerShell 调用 SOAP Web 服务很容易。运行$myProxy = New-WebServiceProxy -Uri 'https://example.com/some/web/service.aspx?wsdl',然后所有操作都神奇地在$myProxy 对象上可用。
但是,我最近同意帮助实现一个快速脚本,它允许我们将数据发送到此处详述的 SII Web 服务:https://www.agenciatributaria.es/AEAT.internet/en_gb/Inicio/Ayuda/Modelos__Procedimientos_y_Servicios/Ayuda_P_G417____IVA__Llevanza_de_libros_registro__SII_/Ayuda_tecnica/Informacion_tecnica_SII/WSDL_de_los_servicios_web/WSDL_de_los_servicios_web.shtml
我要连接的非生产网络服务应该是:https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP(即从上一个链接收到发票)。但是,尝试连接到该 URL 会失败。
我找到了一种解决方法,可以使用 URI 创建代理:https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactEmitidas.wsdl。但是,生成的代理并没有给我我期望看到的动作。查看底层 WSDL 似乎指定了多个端口;一些用于生产,另一些用于测试。我想确保我只连接到测试服务。
问题
如何确保我只连接到测试服务?
...如何确保我只连接到端口SuministroFactEmitidasPruebas?
我目前的代码
$uri = 'https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactEmitidas.wsdl'
$certificate = Get-Item -Path 'Cert:\CurrentUser\My\ABCDEF1234567890' #i.e. this points to the certificate in my certificate store using the thumbprint of the SII certificate
$proxy = New-WebServiceProxy -Uri $uri
$proxy.ClientCertificates.Add($certificate)
$proxy.AllowAutoRedirect = $true
这有效并显示了可用的操作,但没有说明我将如何仅选择 TEST (SuministroFactEmitidasPruebas) 端口。
【问题讨论】:
标签: powershell soap wsdl new-webserviceproxy