Me ha tocado llamar a un Webservices .Net pero que contenía una situación muy particular, debía inicialmente llamar a un método inicializador, que preparaba al Webservices para poder llamar a los otros métodos que éste contenía.
Con Netbeans generamos el proxy para el webservices a través de las librerías de Metro, pero luego, al intentar llamar al primer método y luego al segundo, se generaba un error debido a que el webservices reclamaba porque no se había llamado al método inicializador, aun cuando las dos lineas estaban puestas consecutivamente en el código. Esto porque era un Webservices Satatefull, o sea, que debíamos conservar el estado de las llamadas consecutivas para poder ser utilizadas.
De esta forma el siguiente ejemplo muestra como llamar a uno de este tipo de Webservices, se presume que aqui existe un proxy a Objeto que tiene dos métodos llamados metodoInicializador y segundoMetodo:
public class Main {
public static void main(String[] args) {
try {
QName sName = new QName("https://algunNamespace.cl", "Objeto");
Objeto objeto= new Objeto(new URL("https://algunServidor.cl/Objeto?wsdl"), sName);
BindingProvider bp = ((BindingProvider) objeto.getWSHttpBindingIObjeto());
bp.getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY,true);
bp.getRequestContext().put(BindingProvider.SOAPACTION_USE_PROPERTY, new Boolean(true));
((IObjeto)bp).metodoInicializador("abcd");
Data data =((IObjeto)bp).segundoMetodo("xxyyzz");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}