Java 正则表达式提取 SOAP 错误信息 - 匹配 faultstring 标签内容
Java 正则表达式提取 SOAP 错误信息 - 匹配 faultstring 标签内容
在处理 SOAP Web 服务时,当发生错误时,服务端通常会返回包含错误信息的 SOAP 响应。 其中,
代码示例
以下代码展示了如何使用 Java 正则表达式来匹配 SOAP 响应中的
String response = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
' +
' <soap:Body>
' +
' <soap:Fault>
' +
' <faultcode>soap:Server</faultcode>
' +
' <faultstring>com.landray.kmss.sys.metadata.exception.KmssUnExpectFieldException: 无法识别的字段:fd_396ea85762665d(流程管理:com.landray.kmss.km.review.model.KmReviewMain)\xd;
' +
'</faultstring>
' +
' <detail>
' +
' <ns1:Exception xmlns:ns1="http://webservice.review.km.kmss.landray.com/"/>
' +
' </detail>
' +
' </soap:Fault>
' +
' </soap:Body>
' +
'</soap:Envelope>';
Pattern pattern = Pattern.compile('<faultstring>(.*?)</faultstring>');
Matcher matcher = pattern.matcher(response);
if (matcher.find()) {
String faultString = matcher.group(1);
System.out.println(faultString);
}
解析
-
定义正则表达式:
'<faultstring>(.*?)</faultstring>'这个正则表达式用于匹配标签及其内容。 (.*?)表示匹配任意字符,非贪婪模式,尽可能少的匹配。
-
创建 Pattern 对象:
Pattern.compile(regex)根据正则表达式创建 Pattern 对象。
-
创建 Matcher 对象:
pattern.matcher(response)使用 Pattern 对象和待匹配的 SOAP 响应字符串创建 Matcher 对象。
-
匹配查找:
matcher.find()查找第一个匹配的字符串。
-
获取匹配结果:
matcher.group(1)获取第一个匹配的子组(即标签中的内容)。
输出结果
com.landray.kmss.sys.metadata.exception.KmssUnExpectFieldException: 无法识别的字段:fd_396ea85762665d(流程管理:com.landray.kmss.km.review.model.KmReviewMain)\xd;
通过以上步骤,我们成功地使用 Java 正则表达式提取了 SOAP 错误响应中的
原文地址: https://www.cveoy.top/t/topic/nu4s 著作权归作者所有。请勿转载和采集!