2012-08-08 25 views
7

tôi cần phải tạo một yêu cầu SOAP mà trông như thế này:SOAP-ERROR: Encoding: Object không có tài sản

<soapenv:Body> 
<getItemsForProject> 
    <token> 
     <user>?</user> 
     <password>?</password> 
    </token> 
    <projectId></projectId> 
    <start>0</start> 
    <count>0</count> 
</getItemsForProject> 
</soapenv:Body> 

Các hoạt động dự kiến ​​này:

[209] => struct getItemsForProject { 
wsAuth token; 
long projectId; 
int start; 
int count; 
} 

Tôi đã thử những điều sau đây nhưng tiếp tục nhấn PHP Fatal error: SOAP-ERROR: Encoding: object has no 'start' property

Tôi biết rằng đối tượng mã thông báo có thể được tạo như thế này, vì tôi đã sử dụng nó cho một hoạt động khác:

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

Tuy nhiên, làm điều tương tự cho tham số 'bắt đầu' không thành công với thông báo lỗi nghiêm trọng. Dưới đây là một phần của mã:

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

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

echo $soap->__getLastRequest() ."\n"; 

Tôi không thể in theo yêu cầu xà phòng đầy đủ bằng $soap->__getLastRequest() bởi vì nó được trả lại lỗi nghiêm trọng trước khi ban hành yêu cầu. Tương tự, tôi không thể sử dụng var_dump() trên $resp vì nó chết trước khi thực hiện dòng đó. Làm thế nào tôi có thể nói những gì đang thực sự được gửi ?! Nếu tôi biết điều đó, thì tôi có thể gỡ lỗi điều này dễ dàng hơn.

Cảm ơn, ns

Trả lời

10

Hãy thử với một cái gì đó như thế:

$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);  
Các vấn đề liên quan