php - 使用 PHP 在 WSDL 中使用奇怪的附加响应

标签 php web-services wsdl

我通过 php 使用此网络服务

$wsdl = 'http://www.ezzylearning.com/services/CountryInformationService.asmx?wsdl';
$soap = new soapClient($wsdl);
try{
$return = $soap->GetCountriesByContinent(array('continentCode'=>'AS'));
} catch (Exception $e) {
    die ('Error: ' . $e->getMessage());
}
var_dump($return->GetCountriesByContinentResult);

我得到这个结果:

object(stdClass)#3 (2) { ["schema"]=> string(607) "" ["any"]=> string(6747) "AFAFGAfghanistanAMARMArmeniaAZAZEAzerbaijanBHBHRBahrainBDBGDBangladeshBTBTNBhutanIOIOTBritish Indian Ocean TerritoryBNBRNBruneiKHKHMCambodiaCNCHNChinaCXCXRChristmas IslandCCCCKCocos IslandsGEGEOGeorgiaHKHKGHong KongININDIndiaIDIDNIndonesiaIRIRNIranIQIRQIraqILISRIsraelJPJPNJapanJOJORJordanKZKAZKazakhstanKWKWTKuwaitKGKGZKyrgyzstanLALAOLaosLBLBNLebanonMOMACMacaoMYMYSMalaysiaMVMDVMaldivesMNMNGMongoliaMMMMRMyanmarNPNPLNepalKPPRKNorth KoreaOMOMNOmanPKPAKPakistanPSPSEPalestinian TerritoryPHPHLPhilippinesQAQATQatarSASAUSaudi ArabiaSGSGPSingaporeKRKORSouth KoreaLKLKASri LankaSYSYRSyriaTWTWNTaiwanTJTJKTajikistanTHTHAThailandTRTURTurkeyTMTKMTurkmenistanAEAREUnited Arab EmiratesUZUZBUzbekistanVNVNMVietnamYEYEMYemen" }

如您所见,以这种方式获取数组是没有用的,因为所有内容都是附加的。 那么,哪种方式才是使用这项服务的正确方式呢?

提前致谢。

最佳答案

WSDL 定义确定 SoapClient 如何形成请求和解释响应。

您尝试访问的方法的响应定义如下:

<s:element name="GetCountriesByContinentResponse">
  <s:complexType>
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="GetCountriesByContinentResult">
        <s:complexType>
          <s:sequence>
            <s:element ref="s:schema" />
            <s:any />
          </s:sequence>
        </s:complexType>
      </s:element>
    </s:sequence>
  </s:complexType>
</s:element>

因此 PHP 正在将 XML 响应转换为 schemaanyany 只是 XML 内容的字符串版本。

any 的内容应该是有效的 XML,因此,如果您无法修改 WDSL,您始终可以使用 XML 解析器读取该字符串。

关于php - 使用 PHP 在 WSDL 中使用奇怪的附加响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12965722/

相关文章:

web-services - 安装MediaWiki后如何制作模板?

php - 如何使用 PHP 生成 SOAP Web 服务的 XML 请求,例如 SOAPUI 请求

java - 使用 Spring 为每个操作自定义超时配置

php - Magento 动态更改运费 SQLSTATE[23000]

java - 对 Web 服务客户端隐藏数据对象结构和字段

php - Laravel - 如何添加另一个联接来获取多个表

c# - 如何使用微软的 Dynamics AX 类?

java - 无法使用 jaxb2-maven-plugin 将 WSDL 解析为不同的包

php - 从 laravel 的数据库中获取所有帖子及其评论

javascript - 基本点击功能转为AJAX调用