我已經編寫了以下Apex類作爲一套自定義Web服務的一部分。都有同樣的問題,但這是最簡單的例子;如果我能解決這個問題,我可以解決它的其他Web服務。Salesforce如何返回自定義錯誤對象
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」之前,它確實表明查詢的列表,以便代碼工作。 問題是,如果我調用Webservice(通過PHP或SOAPUI),結果是空的。 我使用當然由salesforce創建的類中的wsdl。
我也看了一下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中也拋出一個異常...就像http ://php.net/manual/en/soapserver.fault.php – eyescream
你是完全正確的拋出錯誤。然而,這是爲了準備在那裏建立更多的邏輯而完成的。但首先,我想獲得_some_結果。 –