我有一个webservice,它需要某种请求格式。发送无效的请求格式时,出现以下错误:
<faultcode>soap:Client</faultcode>
<faultstring>Unmarshalling Error: unexpected element (uri:"", local:"aaaa"). Expected elements are <{}xxx>,<{}yyy></faultstring>
发生这种情况时,我需要发送一封电子邮件。在这封电子邮件中,我需要传入的请求(我发送到webservice的XML)。
我尝试实现CXF拦截器:
public class ExceptionInterceptor extends AbstractSoapInterceptor {
/**
* Logger
*/
private final static Logger LOGGER = LoggerFactory.getLogger(ExceptionInterceptor.class);
/**
* Constructeur
*/
public ExceptionInterceptor() {
super(Phase.PRE_LOGICAL);
}
public void handleMessage(SoapMessage message) throws Fault {
Fault fault = (Fault) message.getContent(Exception.class);
Throwable ex = fault.getCause();
if (ex instanceof UnmarshalException) {
LOGGER.error("Error in incoming message", ex);
// TODO : send email
}
}
}
但是如何在此处获取发送到webservice的原始消息?Apache CXF拦截器没有太多文档记录:(
提前感谢!
Hejk公司
您可以使用默认的CXF记录器LoggingInInterceptor
和LoggingOutInterceptor
记录肥皂消息,或使用自定义拦截器提取有效负载
// output log using log4j
//LogUtils.setLoggerClass(org.apache.cxf.common.logging.Log4jLogger.class);
yourService = new YourService(wsdlURL, SERVICE_NAME);
port = yourService.getServicePort();
Client client = ClientProxy.getClient(port);
client.getInInterceptors().add(new LoggingInInterceptor());
client.getOutInterceptors().add(new LoggingOutInterceptor());
消息将通过控制台写入。您可以使用log4j或配置java。util。日志记录。在此处查看更多示例
public class MyInterceptor extends AbstractPhaseInterceptor<Message> {
public MyInterceptor () {
super(Phase.RECEIVE);
}
public void handleMessage(Message message) {
//Get the message body into payload[] and set a new non-consumed inputStream into Message
InputStream in = message.getContent(InputStream.class);
byte payload[] = IOUtils.readBytesFromStream(in);
//log payload...
ByteArrayInputStream bin = new ByteArrayInputStream(payload);
message.setContent(InputStream.class, bin);
}
public void handleFault(Message messageParam) {
//Invoked when interceptor fails
}
}
以编程方式添加拦截器
WebClient.getConfig(client).getOutInterceptors().add(new MyInterceptor());
我有一个jersey服务器的例子,它适用于XML,但不适用于JSON。 如果我将此xml请求作为发送到服务器,则一切正常, 作为) 我在utilities-online.info将其翻译为JSON,并将其作为发送到相同的URL,具有相同的参数,但收到错误“400错误请求” 环境: Tomcat 7 球衣2.17 我尝试过的: 将添加到init-参数 启用init-参数为 添加了依赖项//
问题内容: 我可以使用Groovy脚本获取响应xml。我需要获取请求XML,因为我需要在soap ui测试中添加“断言脚本”。 我正在使用以下代码来获取响应xml 但是我不确定如何获取SOAPUI的请求xml。谁能帮我获得SOPAUI的请求xml吗? 问题答案: 要以字符串形式获取请求内容,可以使用 有关SoapUI API的更多信息,请访问http://www.soapui.org/apidoc
问题内容: 有什么方法可以单独使用wsdl(url)获得样本请求xml? 以下是wsdl示例:http : //www.webservicemart.com/uszip.asmx? WSDL 示例请求: 我知道那里有SOAPUI等工具,其他工具也可以做到这一点。但是,如果不使用这些工具,还有其他方法可以使用Java实现吗? 使用wsimport将是让我获得Java源码的一种选择,这是更静态的。有没
在做了一些研究后,我发现这是一个CORS问题。我正在使用谷歌应用程序引擎与Python。这个错误是我可以修复的,还是API的bug?我已经设法用这个API做了一个POST请求,没有问题。我已经阅读了很多关于CORS的信息,但还没有找到解决这个问题的方法。 下面是GET请求的Javascript代码,它只是从Trello API复制/粘贴的,所以我不确定哪里出了问题:
问题内容: 我正在尝试调试我写的一个简单REST库时遇到的非常异常的错误。 我使用标准的net / http包发出Get,Post,Put,Delete请求,但是当我连续发出多个请求时,我的测试有时会失败。我的测试看起来像这样: 我正在这样请求: 有时它可以工作,但是大多数时候我会出现1或2个失败: 当我提出多个请求时,就会发生失败。如果我注释掉除PUT请求之外的所有内容,则测试将始终通过。一旦包
我已经尝试了几次迭代,并搜索了所有的示例代码。对于如何提出成功的请求有什么想法吗?TIA