Sto utilizzando l'API Axis per accedere al server HTTP Axis. La documentazione dell'API può essere trovata here.Gestore per aggiungere intestazioni HTTP alla richiesta HTTP non invocata quando si utilizza l'API client Axis
Sto usando il seguente codice per aggiungere gestori al server. service
è di tipo java.xml.rpc.Service
HandlerRegistry registry = service.getHandlerRegistry();
QName serviceName = new QName(url, "MyServiceClass");
List<HandlerInfo> handlerChain = new ArrayList<HandlerInfo>();
HandlerInfo handlerInfo = new HandlerInfo(MyHandler.class, null, null);
handlerChain.add(handlerInfo);
registry.setHandlerChain(serviceName, handlerChain);
So che il nome del servizio è corretto come sto ottenendo l'output corretto nelle successive chiamate al servizio oggetto.
In qualche modo il gestore non viene richiamato. Ecco la classe dell'handler. La mia intenzione è di aggiungere intestazioni personalizzate alla richiesta HTTP prima di inoltrare la richiesta al server.
import javax.xml.namespace.QName;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
public class MyHandler extends BasicHandler {
@Override
public void init() {
System.out.println("init called");
super.init();
System.out.println("init called");
}
@Override
public void cleanup() {
super.cleanup();
System.out.println("cleanup called");
}
@Override
public void invoke(MessageContext mc) throws AxisFault {
System.out.println("invoke called");
}
public QName[] getHeaders() {
System.out.println("getHeaders");
return new QName[1];
}
}
Cosa c'è di sbagliato nel codice sopra?
C'è un altro modo per modificare le intestazioni HTTP usando Apache Axis API?
questo funziona per me. con il mio client-config.wsdd. Per fortuna questo strumento genera il file corretto. –
Funziona per me! Grazie! – jilt3d