我已经将以下Apex类编写为一套自定义Web服务的一部分。所有人都有同样的问题,但这个问题最简单;如果我可以解决这个问题,我可以为其他网络服务解决它。
global class WebServiceA4S {
global class returngetEnquiries {
public String status {get;set;}
public String error {get;set;}
public List<Enquiry__c> results {get;set;}
}
Webservice static returngetEnquiries getEnquiries() {
returngetEnquiries rtnError = new returngetEnquiries();
rtnError.status='success';
rtnError.error = '';
rtnError.results = new List<Enquiry__c>();
// id en name
try {
list<Enquiry__c> tmp = [Select id,name From Enquiry__c];
rtnError.results = tmp;
}
catch(Exception e) {
rtnError.status='error';
rtnError.error = String.valueof(e);
}
return rtnError;
}
}
现在,如果我调试返回的rtnError,就在'return rtnError'之前,它会显示一个查询列表,以便代码可以运行。 问题是,如果我调用Webservice(通过PHP或SOAPUI),结果为空。 我使用了类中的wsdl,当然是由salesforce创建的。
我也查看了wsdl,它看起来像这样:
...
<xsd:complexType name="returngetEnquiries">
<xsd:sequence/>
</xsd:complexType>
<xsd:element name="getEnquiries">
<xsd:complexType>
<xsd:sequence/>
</xsd:complexType>
</xsd:element>
<xsd:element name="getEnquiriesResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="result" type="tns:returngetEnquiries" nillable="true"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
...
看起来没有定义返回查询。我尝试编辑它并添加类中定义的字段,但这没有帮助。
答案 0 :(得分:1)
经过一番调查后,我找到了解决方案。它在返回类中。参数应该是webservice而不是public:
global class returngetEnquiries {
webservice String status {get;set;}
webservice String error {get;set;}
webservice List<Enquiry__c> results {get;set;}
}