Tôi muốn trả về một mảng đối tượng bài viết trong một dịch vụ web PHP, sử dụng nuSOAP v 1.114. Đây là cách để tôi thiết lập các WSDL:Trả về một mảng đối tượng trong dịch vụ web PHP
$server->wsdl->addComplexType(
'ArticleType',
'complexType',
'struct',
'all',
'',
array('articleId' => array('name'=>'articleId', 'type'=>'xsd:int'),
'heading' => array('name'=>'heading', 'type'=>'xsd:string'),
'text' => array('name'=>'text', 'type'=>'xsd:string')
)
);
$server->wsdl->addComplexType(
'ArrayOfArticleType',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref' => 'SOAP-ENC:arrayType',
'wsdl:arrayType' => 'tns:ArticleType[]' // ArticleType[]
)
),
'tns:ArticleType'
);
My PHP Điều lớp là rất đơn giản:
class Article {
public $articleId;
public $heading;
public $text;
public function __construct($articleId, $heading, $text=NULL) {
$this->articleId = $articleId;
$this->heading = $heading;
$this->text = $text;
}
}
Nếu tôi trở lại chỉ là một Điều new Object, như thế này:
function TestArrayReturn() {
$arr = new Article(12345, "Test heading", "Test text.");
//$arr2 = array($arr);
return $arr;
}
chức năng, đã đăng ký là:
$server->register("TestArrayReturn", array(), array('return'=>'tns:ArticleType'), $namespace, $namespace."#TestArrayReturn", 'rpc', 'encoded', 'Test function');
hoạt động tốt và trả về bài viết như thể nó là một mảng. Tuy nhiên, nếu tôi thử và trả về một ArrayOfArticleType (dòng nhận xét trong TestArrayReturn()), và đăng ký hàm như kiểu trả về tns: ArrayOfArticleType, thì nó không thành công với Lỗi: Lỗi HTTP: không có dữ liệu nào xuất hiện sau tiêu đề HTTP.
Tuy nhiên, nếu tôi có thể tạo một mảng của mảng bằng tay, như vậy:
$arr = array("articleId"=>12345, "heading"=>"Test heading", "text"=>"Test text");
$arr2 = array("articleId"=>12345, "heading"=>"Test heading", "text"=>"Test text");
return array($arr, $arr2);
nó hoạt động !? Điều gì là sai với mô tả WSDL ArrayOfArticleType của tôi mà không cho phép nó sắp xếp chính xác các đối tượng ArticleType, nhưng tuần tự đúng một mảng kết hợp với các thuộc tính giống nhau ("articleId", "heading", "text") ??
Xin lỗi vì tất cả mã, nhưng tôi cảm thấy cần thiết để xác định lỗi tôi đang xem. Bất kỳ trợ giúp được đánh giá cao, tôi đã đấu tranh với việc thiết lập WSDL cho dịch vụ này trong nhiều ngày.
Các chút thông tin về thiết lập các giá trị trả về để 'xsd: Array' không phụ thuộc vào tùy chỉnh định nghĩa ComplexType đã cứu tôi! Vâng, sau khoảng một tuần đuổi theo lỗi * Không được Tài liệu này trong NuSOAP. – Kingsolmn
Tôi không tham gia PHP. Bạn đặt mã đó ở đâu? –