问题描述: 在API-Connect 2018中,无法将来自Wiremock的“SOAP Fault”响应识别为SOAPFault。
解决方法: 问题可能是由于Wiremock返回的“SOAP Fault”响应与API-Connect的SOAPFault类不兼容引起的。为了解决这个问题,可以尝试以下解决方法:
确保Wiremock返回的响应确实是一个有效的SOAP Fault。可以使用SOAPUI或类似的工具验证Wiremock返回的响应是否符合SOAP Fault的格式和结构。
在API-Connect中,可以尝试自定义一个转换器,将Wiremock返回的响应转换为API-Connect可识别的SOAPFault对象。以下是一个示例代码:
import com.ibm.websphere.sca.ServiceManager;
import com.ibm.websphere.sca.SOAPFault;
import com.ibm.websphere.sca.data.JavaObject;
public class WiremockSOAPFaultConverter {
public SOAPFault convertToSOAPFault(JavaObject response) {
Object responseObject = response.getObject();
if (responseObject instanceof String) {
String soapFaultString = (String) responseObject;
// 解析soapFaultString并创建SOAPFault对象
SOAPFault soapFault = ServiceManager.INSTANCE.createSOAPFault();
soapFault.setFaultString(soapFaultString);
return soapFault;
}
return null;
}
}
var wiremockResponse = // 获取Wiremock返回的响应
var converter = new WiremockSOAPFaultConverter();
var soapFault = converter.convertToSOAPFault(wiremockResponse);
if (soapFault != null) {
// 处理SOAP Fault
} else {
// 处理正常响应
}
通过以上解决方法,您可以尝试将Wiremock返回的“SOAP Fault”响应识别为SOAPFault,并在API-Connect中进行相应的处理。