【问题标题】:Customize PHP SOAP Body Parameters according to WSDL File format根据 WSDL 文件格式自定义 PHP SOAP 正文参数
【发布时间】:2012-12-11 10:49:01
【问题描述】:

我正在尝试向远程服务器发送 SOAP 请求,并且需要发送以下请求消息。

<SOAP-ENV:Body>
<ns1:F1>
<id>2323</id>
</ns1:F1>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope> 

但我的请求是这样的

<SOAP-ENV:Body>
<ns1:F1/>
<param1>2323</param1>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope> 

我像这样使用来自 WAMP 服务器的通用 php soap_client 函数。

 $client = new SoapClient("name.wsdl",array(
    "trace"      => 1,
    "exceptions" => 0 );

  $result = $client->F1($value);

如何将第二个输出转换为第一个。我需要更改参数名称是从 param1 更改为 F1 并正确关闭 Body 标记。

【问题讨论】:

    标签: php web-services soap soap-client


    【解决方案1】:

    您如何构建价值?如果 Web 服务正在寻找复杂类型,您可能需要将此变量创建为多维数组。有的话可以在WSDL文件中寻找线索。

    $value = array(
               'F1' = array(
                        'id' => 2323
                           )
                   );
    

    【讨论】:

      【解决方案2】:

      首先,检查您的 WSDL URL 是否正确,因为 SoapClient 使用服务中的 WSDL 来知道如何命名您的参数。

      您也可以按字面意思指定参数名称:

      $response = $client->__soapCall('ns1:F1', array(new SoapParam('2323','id')));
      

      【讨论】:

        【解决方案3】:

        尝试在 __soapCall 函数中使用参数,

        $client = new SoapClient("name.wsdl");
        
        $arrayname = array(
          XXXXXXXXX
        );
        
        $response = $client->__soapCall("F1", array($arrayname ));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多