Webservice per URL ansprechen

majin

Mitglied
Vermutlich ein leidiges Thema, aber weil ich neu in der Materie bin, fällt mir das suchen atm etwas schwer, weil ich nicht weiß was ich suche.

Folgendes ist stand der Dinge, ich hab mir einen Webservice geschrieben

Java:
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class MyWeb {

     public MyWeb() {
     }

     @WebMethod
     public String getData(String data) {
    	 User user = new User(data);
         XStream xstream = new XStream(new JettisonMappedXmlDriver());
         xstream.setMode(XStream.NO_REFERENCES);
         xstream.alias("User", User.class);
         
         System.out.println( xstream.toXML(user));
         
         return xstream.toXML(user);
     }
}

ganz simpel und der xStream parsed das ganze nur nach Json, nicht spannendes.

Server
Java:
public class WebServer {
    public static void main(String[] args) {
    	MyWeb server = new MyWeb();
        Endpoint endpoint = Endpoint.publish("http://localhost:8080/MyWeb", server);
    }
}

Wenn der Server nun gestartet ist, dann ist zwar alles toll, aber das einzige was ich finde, ist wie man einen Client dafür schreibt, das hab ich dann zwar erstmal gemacht, weil ich dachte so komm ich dem Thema näher und komme selbst auf die Lösung, aber leider wars das nicht.
Ich kann zwar nun ne Anfrage senden, allerdings nicht per URL.
Muss ich dafür n HTTPServlet schreiben? Das ist das einzige was mir grad einfällt, vllt hat auch jmd.
n Link parat?

Ich danke schonmal für Eure Hilfe :)
 
G

Gelöschtes Mitglied 5909

Gast
Was du warscheinlich machen willst ist einen REST Webservice schreiben.
Was du geschrieben hast ist ein SOAP WebService.
Da kann man nicht mal eben per url drauf (mehr als die wsdl wirst du normalerweise nicht sehen).
Man kann aber tools wie soap-ui verwenden um das ganze zu testen.
 

majin

Mitglied
Bevor ich einen neuen Thread aufmache, führe ich den lieber weiter.

Ich hab hab mich nun mit REST Webservices beschäftigt. Und hab auch was geschrieben.
Allerdings weiß ich nicht warum er tut, was er tut.

Ein paar Zeilen meinerseits:

Java:
@XmlRootElement
public class User {
	private String name;

	public String getUser() {
		return name;
	}
	public void setUser(String name) {
		this.name = name;
	}
}

und ...

Java:
@Path("/user")
public class UserResource {
	@GET
	@Path("{username}")
	@Produces(MediaType.APPLICATION_JSON)
	public User getJSON(@PathParam("username") String userName) {
		User user = new User();
		user.setUser(userName);
		return user;
	}
}

Wenn ich nun dads ganze anzeigen lassen will mit:

Code:
http://localhost:8080/GF/rest/user/Peter

bietet er mir an eine Datei runterzuladen die dann genau JSON beinhaltet.
Mir fällt beim schreiben gerade auf, dass ich vmtl. eine HTML Seite schreiben muss, damit er weiß
wo er das anzeigen muss? Aber erstmal Mittag ;)
Falls das jemand liest bevor ich es ausprobiere, wäre es nett zu schreiben, ob ich richtig liege oder
wie ich es besser machen kann, danke soweit :)
 
N

nillehammer

Gast
Kurz zum Hintergrund: Bei RESTfull-Webservices wird sehr stark danach getrennt, ob ein Request Daten nur abruft oder Daten auf dem Server ändert. Für den Datenabruf wird ein sog. GET-Request verwendet (im Prinzip ne URL mit Suchparametern, dabei hat sich das Schema /parameter1/unterparameter2/... durchgesetzt). Das hast Du gemacht und bekommst das Ergebnis der Abfrage in einer maschinenlesbaren Form (JSON). Vielfach wird auch XML für die Antwort verwendet.

Soll der Aufruf Daten verändern, werden sog. POST-Requests (PUT lassen wir jetzt mal weg) benutzt. Das ist im Prinzip so, als wenn Du ein Formular ausfüllst und den Submit-Button drückst. Hier werden die Daten nicht in der URL übergeben, sondern an den Request angehängt.

Wie Du schon siehst, haben Webservices eine gewisse Ähnlichkeit mit dem Abruf von Webseiten uind dem Absenden von Daten mittels Formularen. ABER, Webservices sind dazu da, dass Anwendungen untereinander Daten austauschen. Wenn Du willst, dass Html herauskommt, dann schreib eine normale Webanwendungm, keinen Webservice.
 

majin

Mitglied
Hey und danke für deine Antwort :)
XML hab ich bewusst nicht genommen, ich wollte das schon in Json haben.
Ich möchte das auch genau dafür benutzen, mein CMS soll sich Daten aus der DB
holen können und daher dachte ich wäre ein Webservice ganz gut dafür, hab damit aber
leider null Erfahrung und fange grad ganz vorne an, wie man ja deutlich sieht^^

Daher reicht mir auch GET, und nein, ich wollte das nicht in HTML darstellen und bis dato gelingt
mir auch nichts dergleichen, wollte nur n schnellen Dummy schreiben, damit ich keine Frage
nach einem download bekomme. Daher der Gedanke an HTML :)

Edith: Weiter komme ich im Moment wenig, wenn ich mir n HTML Dokument erstelle und den JSON Output darstellen will, was muss ich dann dafür tun?
Wenn ich einen GET Request per HTML Formular abschicke erstellt er mir obv.:

Code:
http://localhost:8080/GF/rest/user?name=asd

und damit kann ich nichts anfangen, weil der richtige Aufruf ja:

Code:
http://localhost:8080/GF/rest/user/asd

wäre. Also im Moment stehe ich da auf dem Schlauch.
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Der GET-Request, wie Du ihn gemacht hast (http://localhost:8080/GF/rest/user/asd) war schon richtig so. Das kann man mit URL machen. Das mit den Formularen hab ich nur erwähnt, um den Unterschied zum POST-Request zu erklären.

Dass Du einen Downloaddialog siehst, liegt daran, dass der Browser nicht weiß, wie er mit dem ContentType (@Produces(MediaType.APPLICATION_JSON)) Deines Responses umgehen soll. Du müsstest im Response einen ContentType setzen, mit dem der Browser umgehen kann. Schau mal, was es in der Enumeration "MediaType" noch so für ContentTypes gibt. Ideal wäre einer, mit dem sowohl die Clientanwendung als auch der Browser umgehen können. Falls es das nicht gibt, schreib eine zweite Methode, die der Browser aufruft.

[Edit1]
Ich sehe gerade, Du benutzt wohl JAX-RS. Dort ist MediaType garkeine Enumeration, sondern eine Klasse mit Konstanten. Und es gibt keinen MedaType, der für beides passt, also extra Methode für Darstellung in Browser.
[/Edit1]
 
Zuletzt bearbeitet von einem Moderator:
G

Gelöschtes Mitglied 5909

Gast
Man kann sowohl mit xml als auch mit json gleichzeitig arbeiten:

Java:
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})

Der Browser verwendet dann XML (weil er weiß wie er das anzeigen kann) und andere clients können JSON verwenden (weniger overhead)
 

majin

Mitglied
Sry das ich solange nicht geantwortet hab.

...

[Edit1]
Ich sehe gerade, Du benutzt wohl JAX-RS. Dort ist MediaType garkeine Enumeration, sondern eine Klasse mit Konstanten. Und es gibt keinen MedaType, der für beides passt, also extra Methode für Darstellung in Browser.
[/Edit1]

Hmmm, mit extra Methode meinst du was genau?
Ich hab PlugIns gefunden zum Darstellen von JSON, aber sonst?

@rail, vielen Dank :)
Das kannte ich schon, möchte das ganze aber nur über JSON zurückgeben und XML
aussenvor lassen.
 

TheDarkRose

Gesperrter Benutzer
Du könntest dir auch Curl runterladen. Ist ein REST-Konsolenclient womit du ganz einfach deine Anfragen an deinen Webservice senden kannst und die JSON Antwort schön auf der Konsole ausgegeben bekommst.
 

TheDarkRose

Gesperrter Benutzer
Ähm, doch, weil Curl ein richtiger REST-Client ist. Das was du mit HTML ausgabe und HTML formularen machen willst, ist in diesem fall totaler murks.
 

majin

Mitglied
Hmmm, ich möchte aber nicht auf ein Tool angewiesen sein, ich will ja vom CMS einen Request an meinen Webservice schicken und der gibt dann xy zurück und xy ist dann n Link oder ne id or whatever und soll
dann entweder als Verweis genutzt werden können oder angezeigt werden.
 

Effad

Mitglied
Noch als Nebenbemerkung: Wenn dein Browser Firefox ist, kannst du z.B. JSONovich als Add-On installieren, dann wird JSON inline und hübsch formatiert angezeigt ;-).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Webservice durch Java ansprechen SOA 7
V webservice von aussen (webbrowser) ansprechen 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
L Webservice HTTPS Netbeans SOA 2
G NullPointerException bei Parameterübergabe an Webservice mittels kSoap2 SOA 2
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
M Nutzen des Webservice AWSECommerceService SOA 1
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
mabe83 EJB Klassen für Webservice nutzen SOA 2
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, allgemeine Fragen SOA 9
G Alfresco - WebDav oder WebService SOA 2
0 Webservice nutzen (rpc/enc style) 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

Ähnliche Java Themen

Neue Themen


Oben