小编use*_*716的帖子

如何在CXF中修改JAX-WS响应的HTTP头?

我一直致力于开发安全代理后面的CXF Web服务,该代理要求在服务调用之前进行HTTP基本身份验证.这些服务彼此之间进行通信,并要求对请求和响应进行身份验证.

到目前为止,我已经能够通过HTTPConduit为请求设置HTTP基本身份验证,如下所示:

    Client client = ClientProxy.getClient(port);
    HTTPConduit conduit = (HTTPConduit) client.getConduit();
    AuthorizationPolicy authorizationPolicy = new AuthorizationPolicy();
    authorizationPolicy.setUserName(username);
    authorizationPolicy.setPassword(password);
    authorizationPolicy.setAuthorizationType("Basic");
    conduit.setAuthorization(authorizationPolicy);
Run Code Online (Sandbox Code Playgroud)

在每个服务方法调用上调用上面的方法,并且我以正式的形式获得正确的入站消息

INFO: Inbound Message
----------------------------
ID: 1
Address: http://someURL/someService?wsdl
Encoding: UTF-8
Http-Method: POST
Content-Type: text/xml; charset=UTF-8
Headers: {Accept=[*/*], Authorization=[Basic {TOKEN}], 
                cache-control=[no-cache], connection=[keep-alive], 
                Content-Length=[735], content-type=[text/xml; charset=UTF-8], 
                pragma=[no-cache], ...}
Payload: <soap:Envelope>...</soap:Envelope>
--------------------------------------
Run Code Online (Sandbox Code Playgroud)

但是,响应不包含所需的标头

INFO: Outbound Message
---------------------------
ID: 2
Encoding: UTF-8
Content-Type: text/xml
Headers: {}
Payload: <soap:Envelope/">...</soap:Envelope>
--------------------------------------
Run Code Online (Sandbox Code Playgroud)

如何修改响应HTTP标头?我试过了

((BindingProvider)port).getResponseContext().put(
           MessageContext.HTTP_RESPONSE_HEADERS, 
           Collections.singletonMap("Authentication", 
           Collections.singletonList("Basic "+token)));
Run Code Online (Sandbox Code Playgroud)

没有得到理想的结果.

cxf header http response jax-ws

1
推荐指数
1
解决办法
5368
查看次数

标签 统计

cxf ×1

header ×1

http ×1

jax-ws ×1

response ×1