3

我正在尝试将 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 标记。

4

3 回答 3

3

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

$value = array(
           'F1' = array(
                    'id' => 2323
                       )
               );
于 2012-12-11T16:28:35.333 回答
2

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

您还可以逐字指定参数名称:

$response = $client->__soapCall('ns1:F1', array(new SoapParam('2323','id')));
于 2012-12-11T15:24:55.830 回答
1

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

$client = new SoapClient("name.wsdl");

$arrayname = array(
  XXXXXXXXX
);

$response = $client->__soapCall("F1", array($arrayname ));
于 2012-12-12T05:47:36.277 回答