Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Leider bietet der WebService (auf den ich keinen Einfluss habe) die Daten im rpc/enc style an. Das wsimport tool von java kann jedoch nur mit rpc/lit und doc/lit umgehen.
Was tun?
Gibts andere Implementierungen die mit rpc/enc umgehen können?
Sorry auf deine Frage kann ich dir jetzt auch keine Antwort geben. Kann dir nur sagen wie ich meinen ersten Webservice von der Java Insel zum laufen bekommen hab.
Du startest den Server PublishWsOnServer.java
und führst das wsimport_create.cmd shell aus. Dann hast du 2 neue Service in de.rahan.gen.rahanws MyWebServicesService.java
RahanWebServices.java
Mit den Services kannst du dann deinen Client schreiben.
ClientForGeneratedStubs.java
Code:
import de.rahan.gen.rahanws.MyWebServicesService;
import de.rahan.gen.rahanws.RahanWebServices;
/**
* @author rboelzer
*
*/
public class ClientForGeneratedStubs
{
public static void main( String[] args )
{
RahanWebServices port = new MyWebServicesService().getRahanWebServicesPort();
System.out.printf( "%s Your BMI is %.1f%n",
port.hello( "Rahan" ),
port.bodyMassIndex( 186, 100 ) );
}
}
Schreib mir mal wenn du es geschafft hast einen Webservie mit @SOAPBinding(style = SOAPBinding.Style.Document) hinzubekommen.
Daran scheitere ich gerade.
Hier meine Lösung für alle, die einen rpc/encoded webservice abfragen wollen:
1. Holt euch den Apache Axis 1. Axis 2 unterstützt kein rpc/enc!
2. Die Client Klassen könnt ihr euch mit dem WSDL2Java Tool erzeugen lassen (siehe hier) oder
3. Den Request per Hand schreiben:
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.encoding.XMLType;
import org.apache.axis.client.Call;
public class AskMyWebservice {
public static void main(String[] args) throws Exception{
URL url = new URL("http://www.**********"); // url zur soap anwendung
// construct a call
Call myCall = new Call(url);
// set the URL of the call endpoint
myCall.setTargetEndpointAddress(url);
// the child of the SOAP Body element should look like this:
// <ns1:add xmlns:ns1="urn:NumberAdder"></ns1:add>
myCall.setOperationName( new QName("urn:NumberAdder", "getDescription") );
// prepare the parameters for the call
myCall.addParameter("requested_site", XMLType.XSD_STRING, ParameterMode.IN);
myCall.addParameter("rev_id", XMLType.XSD_STRING, ParameterMode.IN);
// set the return type of the call
myCall.setReturnType(XMLType.SOAP_ARRAY);
// invoke the call
Object myParams[] = new Object[2];
myParams[0]=(Object) new String("hansi");
myParams[1]=(Object) new String("hinterseer");
Object[] resp = (Object[])myCall.invoke(myParams);
System.out.println(resp[0]);
}
}
Hoffe das hilft einigen, die das gleiche Problem hatten!