Webservice nutzen (rpc/enc style)

Status
Nicht offen für weitere Antworten.

0001001

Bekanntes Mitglied
Hi,

ich möchte gerade zum ersten Mal einen Webservice Client schreiben.
Dazu habe ich mir das relevante Kapitel in der Java Insel durchgelesen:
http://www.galileocomputing.de/open...18_007.htm#mj808150a8ef6d22adeba3252e88c4948d

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?

Vielen Dank schon mal!
 

rahan

Mitglied
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 schreibst dein Webservice Klasse

MyWebService.java
Code:
package de.rahan.ws;

/**
 * @author rboelzer
 *
 */
import javax.jws.*; 
import javax.jws.soap.SOAPBinding; 
 
@WebService(name="RahanWebServices") 
@SOAPBinding(style = SOAPBinding.Style.RPC) 
public class MyWebServices 
{ 
  @WebMethod 
  public String hello( @WebParam(name = "name") String name ) 
  { 
    return "Hello " + name + "!"; 
  } 
  @WebMethod(operationName="body-mass-index") 
  @WebResult(name = "your-bmi") 
  public double bmi( @WebParam(name="height") double height, 
                     @WebParam(name="weight") double weight ) 
  { 
    return weight / ((height * height) / 10000); 
  } 
}

Dann Schreibst du den Server

PublishWsOnServer.java
Code:
package de.rahan.ws;

/**
 * @author rboelzer
 *
 */
import javax.swing.JOptionPane; 
import javax.xml.ws.Endpoint; 
 
public class PublishWsOnServer 
{ 
  public static void main( String[] args ) 
  { 
    Endpoint endpoint = Endpoint.publish( "http://localhost:8080/services", 
                                          new MyWebServices() ); 
    JOptionPane.showMessageDialog( null, "Server beenden" ); 
    endpoint.stop(); 
  } 
}

Dann erstellst du am besten ein Commando shell file
wsimport_create.cmd
mit Folgendem Inhalt
Code:
wsimport -d  \WebServiceTest\src -keep -p de.rahan.gen.rahanws [url]http://localhost:8080/services?wsdl[/url]
pause
-d directory
-p package
-keep dont delete Service


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

Den kannst du ausführen.

Eine nette Beschreibung findest du auch hier. www.theserverside.de/webservice-in-java/

Schreib mir mal wenn du es geschafft hast einen Webservie mit @SOAPBinding(style = SOAPBinding.Style.Document) hinzubekommen.
Daran scheitere ich gerade.
 

0001001

Bekanntes Mitglied
Ok hab das Problem gelöst.

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:

http://www.barbara-zengler.de/EinfachesBeispiel.html

Code:
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!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Nutzen des Webservice AWSECommerceService SOA 1
mabe83 EJB Klassen für Webservice nutzen SOA 2
T Error beim Versuch, einen Webservice zu kontaktieren SOA 4
J SOA WebService JAX-WS Java-Klasse per wsimport generieren lassen SOA 3
K Webservice: 4 counts of IllegalAnnotationExceptions SOA 0
D Zertifikat Authentifizierung am Webservice SOA 0
P JBOSS 7 und Restful Webservice SOA 1
N WebService Ausgabe einer ArrayList SOA 2
N Web Services Client aus externen WebService erstellen SOA 4
I SOAP Webservice Methoden und Parameter auslesen SOA 3
F [WebService] Array von eigenen Objekten SOA 0
P SOAP Webservice mit HTTP Basic Authentifizierung SOA 1
M JAVA Webservice Währungsrechner DRINGEND Hilfe SOA 1
A Up-/ Download von Dateien zu WebService SOA 6
D WebService Technik - Aufwand Änderung des Application Server SOA 3
R Webservice Timeout Konfiguration SOA 3
D SOAP Webservice (SAP) SOA 3
MQue WebService Versionierung SOA 9
L [AXIS2] OutOfMemory Exception bei Übertragung von größerer Datei via Webservice SOA 3
A Funktion mit Map als WebService SOA 4
T Webservice serviceName im Handler ermitteln SOA 3
N Webservice Einbinden wsdl SOA 7
M Edit und Remove über Webservice SOA 3
F Client Problem gegen Webservice SOA 3
P Java Webservice mit JWS Bindingnamen customizen SOA 4
L wie ArrayList an Webservice geben? SOA 3
B Webservice Config / SoapStub: Best Practice SOA 3
S Objektübertragung Fehler über Webservice SOA 10
E Webservice durch Java ansprechen SOA 7
L Webservice HTTPS Netbeans SOA 2
G NullPointerException bei Parameterübergabe an Webservice mittels kSoap2 SOA 2
M Webservice per URL ansprechen SOA 14
M Webservice Client erstellen und XML Request senden SOA 3
T Verwendung von Eclipse Projekten im Axis2 Webservice SOA 8
S Webservice als "CronJob" SOA 4
M Webservice (JaxWS) extern verfügbar machen SOA 5
M Welches WebService Framework ist denn das beste FRAMEWORK? SOA 5
D Webservice fürs Internet sichtbar machen SOA 2
W WebService aus einer HTML-Seite SOA 9
T WebService innerhalb von Seam-Projekt, komplexe Datentypen SOA 6
N JAX-WS WebService und Tomcat 7 SOA 11
E Trennung von Daten und WebService und Wiederverwendung der Daten SOA 2
D Sicherheit bei REST-Webservice SOA 19
G WebService, was darf der Client alles sehen SOA 19
S AXIS2 Webservice: Umgang mit komplexen Datentypen SOA 5
G Webservice Contract first SOA 8
G WebService -> ServletFilter SOA 2
G WebService Concurrency SOA 19
M Fehler beim Veröffentlichen eines Webservice SOA 6
G WebService Types SOA 7
G OpenLigaDB Webservice Client SOA 4
G WebService WSDL SOA 3
A PHP WebService aus Java aufrufen SOA 2
R Proxy WebService erstellen SOA 3
G JPA/ Webservice: Passwort Feld einer Klasse fürs Lesen "verschleiern" SOA 10
G WebService mit wsdl erstellen SOA 4
P WebService SOA 6
H Webservice: BindingProvider SOA 6
D WebService DB abfrage SOA 4
S Webservice-Client-Klasse gibt immer null zurück SOA 3
G WebService mit komplexen Objekten SOA 5
C Problem mit Java Webservice - SOAPBinding.Style - Wrapper class fehlt SOA 1
T Rest Webservice der 2 verschiedene XML Objekte(JaxB) entgegennimmt SOA 10
S Webservice, Vererbung und Netbeans SOA 3
E Lesen der kompletten SOAP als WebService Provider/Server SOA 4
T WebService Authentifizierung SOA 11
mabe83 Suche Hilfe zum Thema Webservice + EJB SOA 3
T WebService erstellen SOA 28
T Krankes Vorhaben: Von VB auf Java Webservice SOA 10
M Webservice RuntimeModelerException? SOA 5
G Webservice mit Java aufrufen SOA 2
G WebService: mehrere methoden mit demselben Namen SOA 4
T einfacher Webservice SOA 3
G Webservice im JBoss: runtime modeler error SOA 3
V webservice von aussen (webbrowser) ansprechen SOA 2
V Webservice, allgemeine Fragen SOA 9
G Alfresco - WebDav oder WebService SOA 2
R XML verschicken mit Webservice Server Client SOA 2
R Webservice aufrufen mit SOAP Style.DOCUMENT ? SOA 5
G Webservice zugreifen SOA 6
G Deploy Apache CXF WebService mit Eclipse SOA 2
G Webservice mit JSON SOA 8
T Webservice über Tomcat loggen SOA 5
thE_29 WebService - JAXBElement - richtige Klasse? SOA 2
L Probleme mit komplexen Datentypen in einen Webservice SOA 2
O brauche hilfe bei java/webservice geschichte SOA 29
M Webservice/ Axis/ Bea Weblogic Server 8.1 SOA 12
E Webservice konfigurieren SOA 2
Y Webservice erstellen SOA 4
F Tutorial zu WebService mit JBoss, Eclipse und Jax-ws? SOA 3
C Webservice im Unternehmen SOA 4
L webservice frage (eclipse/wtp, wsdl) SOA 12
U Webservice mit Axis, Hello World Beispiel SOA 2
J Frage zu Webservice SOA 3
L WebService TestClient Problem SOA 2
G WebServices nutzen - (Anfänger) SOA 2
U Tomcat und Axis nutzen? SOA 5
M Unterschied Style.RPC und Style.DOCUMENT SOA 2

Ähnliche Java Themen

Neue Themen


Oben