2012-08-09 60 views
1

我有这样的方法Answers,使用此结构中的第二种方法:呼叫从一个XML-RPC请求

struct PCLAnswersReq 
Members 
string        | UserName 
integer       | SessionID 
array of struct PCLAnswerUnit  | Answers 

的结构PCLAnswerUnit样子:

Members 
integer | QuestionID 
string | Answer 

所以PCLAnswersReq具有的用户名, sessionID和结构数组PCLAnswerUnit,这很好,但我似乎无法弄清楚如何得到第二个结构体。

(使用PHP XML-RPC),我的要求是这样的:

xmlrpc_encode_request('PCLAnswers', array("UserName"=>$uname,"SessionID"=>$sesid,"Answers"=>xmlrpc_encode_request('PCLAnswerUnit',array("QuestionID"=>'',"Answer"=>$questions)))); 

当然,这是造成故障:

"request contains string value where array expected [request : parameter 1 : struct mapped to type PCLAnswersReq : member Answers mapped to type PCLAnswerUnit[]]" 

我试图消除第二XMLRPC请求,只是指出Answers到QuestionID和Answer数组,但是这也不起作用。

任何指导都很有帮助。

谢谢!

'UPDATE'

当XML-RPC请求被修改为这样的:

xmlrpc_encode_request('PCLAnswers', array("UserName"=>$uname,"SessionID"=>$sesid,"Answers"=>array())); 

它工作正常。但是,当我传递'$ questions'数组时,它会再次失败。

回答

0

服务器上的输入法的签名应该在这个顺序: return_type,xmlrpcString,xmlrpcString,xmlrpcArray

你可能有它混淆的地方。返回类型首先跟着你的三个参数。