以前,从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
我要连接的非生产Web服务应为: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
)端口。
答案 0 :(得分:1)
我认为您可以通过class
属性指定服务的端口:
$url = "http://www.thing.com/stuff.asmx?wsdl"
$proxy = New-WebServiceProxy `
-Uri $url `
-namespace ... `
-Class SuministroFactEmitidasPruebas
否则,我认为它会选择第一个端口,但不要在此引用我的名字。希望有帮助。