cxf 拦截器 ?报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

cxf 拦截器 ?报错

2020-06-07 22:06:20 337 1

cxf 框架 搭建的webservice  客户端 配置了 outInterceptor  消息就发不到server  就超时报错。去掉这个拦截器 就好使了。。。。  但是这个拦截器  也没看出什么问题  。

流的问题? client端流没关闭,server端收不到?   

跪求大神指点   

以下是这个拦截器代码:  

    

public class ClientOutInterceptor extends AbstractPhaseInterceptor<SoapMessage> {
    public ClientOutInterceptor() {
        super(Phase.PRE_STREAM);
    }

    public ClientOutInterceptor(String phase) {
        super(phase);
    }

    @Override
    public void handleMessage(SoapMessage message) throws Fault {
        try {
            OutputStream os = message.getContent(OutputStream.class);


            CachedStream cs = new CachedStream();

            message.setContent(OutputStream.class, cs);

            message.getInterceptorChain().doIntercept(message);

            CachedOutputStream csnew = (CachedOutputStream) message.getContent(OutputStream.class);
            InputStream in = csnew.getInputStream();

            String xml = IOUtils.toString(in);

            System.out.println(xml);
//            AESEncryptSafe aesEncryptSafe = new AESEncryptSafe("Kijhr3(dwjnJR6");
//            xml = aesEncryptSafe.encrypt(xml);
            //这里对xml做处理,处理完后同理,写回流中
            IOUtils.copy(new ByteArrayInputStream(xml.getBytes("UTF-8")), os);

            cs.close();
            os.flush();

            message.setContent(OutputStream.class, os);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private class CachedStream extends CachedOutputStream {
        public CachedStream() {
            super();
        }

        protected void doFlush() throws IOException {
            currentStream.flush();
        }

        protected void doClose() throws IOException {
        }

        protected void onWrite() throws IOException {
        }

    }
}
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-06-07 22:06:35

    顶一下

    publicvoidhandleMessage(SoapMessagesoap)throwsFault{System.out.println("开始验证用户信息");List<Header>headers=soap.getHeaders();if(headers==null||headers.size()<1){thrownewFault(newIllegalArgumentException("找不到Header,无法验证用户信息"));}Headerheader=null;for(Headerh:headers){if(h.getName().getLocalPart().equals(SOAP_CONSTRAINT.Q_NAME_LOCALPART)){header=h;break;}}if(header==null){thrownewFault(newIllegalArgumentException("头信息错误"));}Elementel=(Element)header.getObject();NodeListusers=el.getElementsByTagName("username");NodeListpasswords=el.getElementsByTagName("password");if(users.getLength()<1){thrownewFault(newIllegalArgumentException("找不到用户信息"));}Stringusername=users.item(0).getTextContent().trim();if(passwords.getLength()<1){thrownewFault(newIllegalArgumentException("找不到密码信息"));}Stringpassword=passwords.item(0).getTextContent();if(!"admin".equals(username)||!"admin".equals(password)){thrownewFault(newIllegalArgumentException("用户名或密码不正确"));}else{System.out.println("用户名密码正确允许访问");}}

    我的是这样的

    0 0
相关问答

1

回答

Django防跨站{% csrf_token %}标签?报错

2020-06-22 21:16:04 263浏览量 回答数 1

1

回答

wpf定时器问题,跪求解答?报错

2020-06-20 17:10:57 166浏览量 回答数 1

1

回答

thinkphp控制器访问报错,求解??报错

2020-06-16 13:51:19 256浏览量 回答数 1

1

回答

spring控制器List<User>参数?报错

2020-06-08 19:44:28 322浏览量 回答数 1

1

回答

Thinkphp视图模型的'_as'无法使用,请教一下!?报错

2020-06-10 10:14:51 190浏览量 回答数 1

1

回答

CXF 拦截器将返回内容进行加密?报错

2020-06-09 16:06:32 385浏览量 回答数 1

1

回答

在循环中为什么cin有时会失效:报错

2020-06-07 22:15:07 336浏览量 回答数 1

1

回答

perf4j图表没有显示出来? 400 报错

2020-05-30 21:32:34 316浏览量 回答数 1

1

回答

SpringMVC中配置AOP拦截controller - java报错

2020-05-30 11:15:27 355浏览量 回答数 1

1

回答

遇到Reached End of File While Parsing怎么解决?java报错

2020-05-27 13:04:01 12376浏览量 回答数 1
+关注
爱吃鱼的程序员
https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
2
文章
21564
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载