Handler zum Hinzufügen von HTTP-Headern zu HTTP-Anforderungen, die bei Verwendung der Axis Client-API nicht aufgerufen wurden
Ich verwende die Axis-API, um auf den Axis-HTTP-Server zuzugreifen. Die Dokumentation der API finden Sie untHie.
Ich verwende den folgenden Code, um dem Server Handler hinzuzufügen.service
ist vom Typ 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);
Ich weiß, dass der Dienstname korrekt ist, da ich bei nachfolgenden Aufrufen des Dienstobjekts die richtige Ausgabe erhalte.
Irgendwie wird der Handler nicht aufgerufen. Hier ist die Handler-Klasse. Meine Absicht ist es, Benutzerdefinierte Header zur HTTP-Anforderung hinzufügen, bevor Sie die Anforderung an den Server weiterleiten.
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];
}
}
Was stimmt nicht mit dem obigen Code?
Gibt es eine andere Möglichkeit, HTTP-Header mithilfe der Apache Axis-API zu ändern?