मैं एक अपाचे CXF ग्राहक में कुछ http शीर्ष लेख फ़ील्ड सेट करने के लिए:अपाचे CXF - सेट HTTP हेडर
मैं इंटरसेप्टर के माध्यम से इसे करने की कोशिश:
public class HttpHeaderInterceptor extends AbstractPhaseInterceptor<Message> {
private String userId;
private String xAuthorizeRoles;
private String host;
public HttpHeaderInterceptor() {
super(Phase.POST_PROTOCOL);
}
@Override
public void handleMessage(Message message) throws Fault {
Map<String, List> headers = (Map<String, List>) message.get(Message.PROTOCOL_HEADERS);
try {
System.out.println("HttpHeaderInterceptor Host: " + host + " UserId: " + userId + " X-AUTHORIZE-roles: " + xAuthorizeRoles);
headers.put("Host", Collections.singletonList(host));
headers.put("UserId", Collections.singletonList(userId));
headers.put("X-AUTHORIZE-roles", Collections.singletonList(xAuthorizeRoles));
} catch (Exception ce) {
throw new Fault(ce);
}
}
public void setUserId(String userId) {
this.userId = userId;
}
public void setxAuthorizeRoles(String xAuthorizeRoles) {
this.xAuthorizeRoles = xAuthorizeRoles;
}
public void setHost(String host) {
this.host = host;
}
}
मेरी गतिशील ग्राहक वर्ग में
methode:
प्रत्येक के लिए userId और xAuthorizeRol फोन:
public void setHttHeaderInterceptor(String userId, String xAuthorizeRoles){
Client cxfClient = ClientProxy.getClient(this.abgWebServicePort);
HttpHeaderInterceptor httpHeaderInterceptor = new HttpHeaderInterceptor();
httpHeaderInterceptor.setHost("example.org");
httpHeaderInterceptor.setUserId(userId);
httpHeaderInterceptor.setxAuthorizeRoles(xAuthorizeRoles);
cxfClient.getOutInterceptors().add(httpHeaderInterceptor);
}
इससे पहले कि मैं दूरस्थ सेवा शुरू कहा जाता है es अलग-अलग होना चाहिए, लेकिन जब मैं tcpdump के माध्यम से कॉल द्वारा निरीक्षण करता हूं तो सभी कॉलों में हेडर फ़ील्ड में समान मान होते हैं।
कोई भी विचार?
भी http://stackoverflow.com/q/3165647/55452 –
कि मेरी समस्या का समाधान नहीं – Alex