【问题标题】:Parameters in webservice SOAP网络服务 SOAP 中的参数
【发布时间】:2019-12-31 10:17:50
【问题描述】:

我很快就开始通过 SOAP 搞乱网络服务,我有一个问题,我需要在请求中发送以下信息:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.senior.com.br">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:AniversariantesMes>
         <user>usuario</user>
         <password>senha</password>
         <encryption>0</encryption>
         <parameters>
            <!--Optional:-->
            <competencia>01/01/2020</competencia>
            <!--Optional:-->
            <flowInstanceID>?</flowInstanceID>
            <!--Optional:-->
            <flowName>?</flowName>
         </parameters>
      </ser:AniversariantesMes>
   </soapenv:Body>
</soapenv:Envelope>

我正在尝试使用以下代码:

$client = new SoapClient('link do soap');

$function = 'AniversariantesMes';

$parameters = [
    'competencia' => '01/01/2020',
];

$arguments = array('AniversariantesMes' => array(
                        'user'          =>  'senior',
                        'password'      =>  'senior',
                        'encryption'    =>  0,
                        'parameters'    =>  $parameters,
));

print_r($arguments);

$options = array('location' => 'link');

$result  = $client -> __soapCall($function,$arguments,$options);

print_r($result);

代码不考虑“Competencia”并带来默认值(我在 SoapUI 上测试了过滤器,当通过 2020 年 1 月 1 日的“Competencia”时,他过滤了 1 月的生日)

【问题讨论】:

  • 当使用var_dump($client-&gt;__getFunctions()); 代码返回:string(145) "treinamentoAniversariantesMesOut AniversariantesMes(string $user, string $password, int $encryption, treinamentoAniversariantesMesIn $parameters)" 我相信我应该通过“treinamentoAniversariantesMesIn”,但我不知道如何

标签: php xml web-services soap


【解决方案1】:

你能在你的 $parameters 中测试下面的函数吗?

function SoapVar($key , $value)
{
    return new SoapVar("<".$key.">".$value."</".$key.">", XSD_ANYXML, null, null, null);
}
$parameters = [SoapVar( 'competencia' ,  '02/01/2020')];

希望有用。

【讨论】:

  • using var_dump($client-&gt;__getFunctions()); 代码返回:string(145) "treinamentoAniversariantesMesOut AniversariantesMes(string $user, string $password, int $encryption, treinamentoAniversariantesMesIn $parameters)" i believe I believe I should pass the "treinamentoAniversariantesMesIn " 但我不知道如何
猜你喜欢
  • 1970-01-01
  • 2012-09-06
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多