这在我的WAMP服务器上工作正常,但在linux主服务器上不起作用!
try{
$client = new SoapClient('http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl', ['trace' => true]);
$result = $client->checkVat([
'countryCode' => 'DK',
'vatNumber' => '47458714'
]);
print_r($result);
}
catch(Exception $e){
echo $e->getMessage();
}
我在这里想念什么?:(
启用了SOAP
SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl' : failed to load external entity "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"/taxation_customs/vies/checkVatService.wsdl"
从PHP调用URL返回错误
$wsdl = file_get_contents('http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl');
echo $wsdl;
Warning: file_get_contents(http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl): failed to open stream: HTTP request failed! HTTP/1.0 503 Service Unavailable
从Linux命令行调用URL HTTP 200
并返回XML响应
curl http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
对于某些版本的php,SoapClient不会发送http用户代理信息。与本地WAMP相比,服务器上有哪些php版本?
尝试使用上下文流来显式设置用户代理,如下所示:
try {
$opts = array(
'http' => array(
'user_agent' => 'PHPSoapClient'
)
);
$context = stream_context_create($opts);
$wsdlUrl = 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl';
$soapClientOptions = array(
'stream_context' => $context,
'cache_wsdl' => WSDL_CACHE_NONE
);
$client = new SoapClient($wsdlUrl, $soapClientOptions);
$checkVatParameters = array(
'countryCode' => 'DK',
'vatNumber' => '47458714'
);
$result = $client->checkVat($checkVatParameters);
print_r($result);
}
catch(Exception $e) {
echo $e->getMessage();
}
实际上,您使用的Web服务似乎存在一些问题。IPv6上的HTTP和缺少的HTTP用户代理字符串的组合似乎给Web服务带来了问题。
要验证这一点,请在Linux主机上尝试以下操作:
curl -A '' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
此IPv6请求失败。
curl -A 'cURL User Agent' -6 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
此IPv6请求成功。
curl -A '' -4 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
curl -A 'cURL User Agent' -4 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
这两个IPv4请求均成功。
有趣的情况:)我想您的Linux主机会将ec.europa.eu解析为其IPv6地址,并且您的SoapClient版本默认未添加用户代理字符串。
问题内容: 我一直有一些奇怪的问题。主要的问题是,在尝试将WSDL添加到新项目时,我始终收到以下错误: 这是error.log文件中记录的消息: 我验证了该URL上的应用程序已启动并正在运行,并且可以从Web浏览器访问WSDL,但是无论如何我始终会收到此错误消息。我在Windows 7机器上使用SoapUI 4.5.0(32位)。我也尝试了64位版本,但结果相同。无论我是否使用VPN,都会发生这种
问题内容: 我正在使用apache cxf + spring,这些东西在Eclipse中运行,但不在命令行中运行。不断获取错误无法解决绑定 问题答案: 解决方案: 步骤1:使用Maven Shade插件 第二步:如果您在cxf中使用spring,请确保在@Configuration类中添加以下内容 @ImportResource({“” classpath:META-INF / cxf / cxf
我使用的是ApacheCXF spring,它在eclipse中运行,但不在命令行中运行。keep get无法解析绑定错误
我正在使用Javase6手动部署webservice。我想使用@SchemaValidation来验证SOAP流量。在发布终结点期间,我收到错误: 原因:org.xml.sax.SAXParseException:s4s-att-invalid-value:元素“restriction”中“base”的属性值无效。记录原因:UndeclaredPrefix:无法将“xsd:string”解析为QN
问题内容: 我正在将样式加载器与webpack和react框架一起使用。当我在终端中运行webpack时,尽管我已正确指定了文件路径,但我仍获取import.js文件。 webpack.config.js: 问题答案: 尝试在下面运行脚本: 修改webpack配置,在中添加字段。
我已经使用以下请求生成了一个auth令牌: curl-i-v“https://api.omniture.com/token”-u“my-user”-d“grant_type=client_credentials” 然后,我复制返回的整个对象,如下所示: 编辑 在下面写的答案之后,这是我得到的错误消息: