SOAP-ERROR:编码:对象没有属性

non*_*ter 7 php soap web-services soap-client

我需要创建一个如下所示的SOAP请求:

<soapenv:Body>
<getItemsForProject>
   <token>
      <user>?</user>
      <password>?</password>
   </token>
   <projectId></projectId>
   <start>0</start>
   <count>0</count>
</getItemsForProject> 
</soapenv:Body>
Run Code Online (Sandbox Code Playgroud)

该操作期望:

[209] => struct getItemsForProject {
 wsAuth token;
 long projectId;
 int start;
 int count;
}
Run Code Online (Sandbox Code Playgroud)

我试过以下但是继续打 PHP Fatal error: SOAP-ERROR: Encoding: object has no 'start' property

我知道可以像这样创建令牌对象,因为我已经将它用于另一个操作:

$auth->token = new \stdClass;
$auth->token->user = $username;
$auth->token->password = $password;
Run Code Online (Sandbox Code Playgroud)

但是,对'start'参数执行类似操作会导致致命错误消息失败.这是代码的一部分:

$opts = new \StdClass;
$opts->projectId = 123;
$opts->start = 0;
$opts->count = 0;

$resp = $soap->getItemsForProject($auth, $opts);       

echo $soap->__getLastRequest() ."\n";
Run Code Online (Sandbox Code Playgroud)

我无法打印完整的soap请求,$soap->__getLastRequest()因为它在发出请求之前返回致命错误.同样,我不能使用var_dump()$resp,因为它在执行该行前死亡.我怎么知道实际发送的是什么?!如果我知道,那么我可以更轻松地调试它.

谢谢, ns

Ana*_*nas 11

尝试类似的东西:

$myClass->token = new \stdClass;
$myClass->token->user = $username;
$myClass->token->password = $password;

$myClass->projectId = 123;
$myClass->start = 0;
$myClass->count = 0;


$resp = $soap->getItemsForProject($myClass);       
Run Code Online (Sandbox Code Playgroud)