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?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage