Soap Salesforce如何返回自定义错误对象
我已经编写了以下Apex类作为定制Web服务套件的一部分。所有人都有相同的问题,但这是最简单的例子;如果我能解决这个问题,我就能解决其他Web服务的问题Soap Salesforce如何返回自定义错误对象,soap,salesforce,Soap,Salesforce,我已经编写了以下Apex类作为定制Web服务套件的一部分。所有人都有相同的问题,但这是最简单的例子;如果我能解决这个问题,我就能解决其他Web服务的问题 global class WebServiceA4S { global class returngetEnquiries { public String status {get;set;} public String error {get;set;} public List<Enq
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;
}
}
全局类WebServiceA4S{
全球课程查询{
公共字符串状态{get;set;}
公共字符串错误{get;set;}
公共列表结果{get;set;}
}
Webservice静态ReturnGetInquiries GetInquiries(){
ReturnGetInquiries RTN=新的ReturnGetInquiries();
rtn.status='success';
rtnError='';
rtnError.results=新列表();
//姓名
试一试{
列表tmp=[从查询中选择id、名称];
rtnError.results=tmp;
}
捕获(例外e){
rtn.status='error';
rtnError=String.valueof(e);
}
返回RTN错误;
}
}
现在,如果我调试返回的RTN错误,就在“返回RTN错误”之前,它确实会显示查询列表,以便代码正常工作。
问题是,如果我调用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>
...
。。。
...
似乎还没有定义ReturnGetInquiries。我试图编辑它并添加类中定义的字段,但没有帮助。经过调查,我找到了解决方案。它在教室里。参数应为webservice而不是public:
global class returngetEnquiries {
webservice String status {get;set;}
webservice String error {get;set;}
webservice List<Enquiry__c> results {get;set;}
}
global class ReturnGetQuery{
webservice字符串状态{get;set;}
webservice字符串错误{get;set;}
webservice列表结果{get;set;}
}
我看不出有什么东西会立即出现错误。。。但是您真的必须捕获这样的错误吗(不管SELECT很少抛出任何错误)?如果您将离开simplereturn[选择…]代码>,抛出的异常将冒泡并返回给您XML响应,您这边的SOAP库也应该在PHP中解释并引发异常。。。就像你们抛出错误的结果是绝对正确的。然而,这样做是为了在其中构建更多的逻辑。但是首先我想得到一些结果。很酷,很高兴知道:)你介意接受你自己的答案吗,这样它就“脱离雷达”?