Salesforce如何返回自定义错误对象

时间:2012-12-03 12:31:09

标签: soap salesforce

我已经将以下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>
...

看起来没有定义返回查询。我尝试编辑它并添加类中定义的字段,但这没有帮助。

1 个答案:

答案 0 :(得分:1)

经过一番调查后,我找到了解决方案。它在返回类中。参数应该是webservice而不是public:

global class returngetEnquiries {
    webservice String status {get;set;}
    webservice String error {get;set;}
    webservice List<Enquiry__c> results {get;set;}
}
相关问题