【发布时间】:2012-07-17 10:29:35
【问题描述】:
我正在使用 SoapClient 将一些数据从 PHP 站点发送到 .Net WCF 服务。
这是我的(为清楚起见而缩短)代码:
$wsdl = '/var/www/libraries/MyWsdl.xml';
$myClient = new SoapClient($wsdl);
之后,实际调用:
try {
$res = $myClient->Foo($someParameter);
}
catch(SoapFault $e){
//...
}
catch(Exception $e){
//...
}
这在一切都在线时非常有用,并且如果目标服务器在调用 Foo 时关闭,则错误处理会起作用。
问题是SoapClient 构造函数失败,如果目标服务器关闭,即使我已经为它提供了带有 WSDL 的静态 XML 文件(与“http://www.destination.com/MyService?wsdl”之类的 URL 相对)。
我相信这是因为 WSDL 包含对另一个 WSDL 的引用:
<wsdl:import namespace="http://MyCompany.Services" location="http://www.destination.com/MyService?wsdl=wsdl0"/>
这个其他 WSDL 包含调用参数的定义。
那么,我怎样才能将第二个“子 WSDL”“内联”到原来的“子 WSDL”中呢?
这是否允许我创建SoapClient 而无需启动与目标服务器的连接?
这是我的服务定义:
[ServiceContract(Namespace = "http://MyCompany.Services")]
public interface IMyService
{
[OperationContract]
[XmlSerializerFormat(Style = OperationFormatStyle.Rpc, Use = OperationFormatUse.Literal)]
string Foo(string myParameter);
}
【问题讨论】:
标签: php .net wcf web-services wsdl