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(); } } }