【问题标题】:Salesforce how to return custom error objectSalesforce 如何返回自定义错误对象
【发布时间】:2012-12-03 12:31:08
【问题描述】:

我编写了以下 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,就在“返回 rtnError”之前,它确实显示了一个查询列表,因此代码可以正常工作。 问题是,如果我调用 Web 服务(通过 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>
...

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

【问题讨论】:

  • 我没有看到任何立即弹出的错误...但是您真的必须捕获这样的错误吗(尽管 SELECT 很少会抛出任何错误)?如果你留下简单的return [SELECT...];,抛出的异常会冒泡并返回给你的 XML 响应,你这边的 SOAP 库也应该在 PHP 中解释和转换异常......就像php.net/manual/en/soapserver.fault.php的结果一样
  • 你抛出错误是绝对正确的。但是,这样做是为了准备在那里构建更多逻辑。但首先我想得到 一些 结果。

标签: soap salesforce


【解决方案1】:

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

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

【讨论】:

  • 酷,很高兴知道 :) 你介意接受你自己的答案,这样它就“不被关注”了吗?
猜你喜欢
  • 1970-01-01
  • 2013-04-21
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多