VIES VAT api SOAP错误ipv6

Vla*_*eda 1 php soap ipv6

这是我遇到的服务器设置/问题:

  • SOAP已安装并在服务器上运行
  • 使用PHP SOAP扩展(new SoapClient(self::VAT_VALIDATION_WSDL_URL))来进行调用
  • 我使用的WSDL URL是:http://ec.europa.eu/taxation_customs/vies/services/checkVatService?wsdl
  • 相同的代码适用于大多数其他机器,但不适用于当前的机器
  • SOAP响应是request_success => bool(false),因此请求不会成功
  • 例如,尝试使用telnet连接到URL会导致503内部服务器错误,并且会从其他计算机中502权限被拒绝.

Vla*_*eda 8

这里的问题很难追查,但很容易解决.

ec.europa.eu接受IPv6请求,并使用IPv6响应它们.问题是并非所有服务都能正常使用IPv6.因此,如果您的服务器同时使用IPv4和IPv6,它将更喜欢使用IPv6,因此SOAP请求将失败.

例如:

WKT-03:~$ ping6 ec.europa.eu #not working
connect: Network is unreachable

WKT-03:~$ ping ec.europa.eu #working
PING ec.europa.eu (147.67.136.103) 56(84) bytes of data.
Run Code Online (Sandbox Code Playgroud)

解:

有两种解决方案,要么在服务器上禁用ipv6,要么在以下位置添加新规则/etc/hosts:

147.67.136.103 ec.europa.eu # when/if IP changes, this stops working
Run Code Online (Sandbox Code Playgroud)

因此迫使它使用IPv4.两者都不是很优雅,但这应该有效,直到API完全适用于IPv6.