0

以前,在使用 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 似乎指定了多个端口;一些用于生产,另一些用于测试。我想确保我只连接到测试服务。

问题

如何确保我只连接到测试服务?

即对于 WSDL:https ://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactEmitidas.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) 端口。

4

1 回答 1

1

class我认为您可以通过属性指定服务的端口:

$url = "http://www.thing.com/stuff.asmx?wsdl"
$proxy = New-WebServiceProxy `
  -Uri $url `
  -namespace ... `
  -Class SuministroFactEmitidasPruebas

否则,我认为它会选择第一个端口,但不要引用我的话。希望有帮助。

于 2018-07-26T20:46:17.337 回答