Estoy usando la API de Axis para acceder al servidor HTTP de Axis. La documentación de la API se puede encontrar here.Controlador para agregar encabezados HTTP a la solicitud HTTP no invocada al utilizar la API de cliente de Axis
Estoy usando el siguiente código para agregar controladores al servidor. service
es de 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);
sé que el nombre del servicio es correcto que estoy recibiendo la salida correcta en llamadas posteriores al objeto de servicio.
De alguna manera, el controlador no se está invocando. Aquí está la clase de Handler. Mi intención es agregar encabezados personalizados a la solicitud HTTP antes de reenviar la solicitud al servidor.
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];
}
}
¿Qué problema hay en el código anterior?
¿Hay alguna otra forma de modificar los encabezados HTTP utilizando la API de Apache Axis?
esto funciona para mí. Hubo algún problema con mi client-config.wsdd. Afortunadamente, esta herramienta genera el archivo correcto. –
¡Está funcionando para mí! ¡Gracias! – jilt3d