api nutzen die json Objekte zurück gibt.

Andre267

Erfahrenes Mitglied
Schönen guten Abend,

ich versuche gerade via Java auf eine Seite zu zugreifen, welche json Objekte zurück gibt.
Ich habe schon gegoogelt aber habe immer noch keine Ahnung wie ich auf die Seite zugreife mit java und die json objekte ind normale Objekte verarbeite bzw. wie ich damit arbeite.

Kann mir da jemand helfen?

Beispiel:
http://maxmusterman.de/api.php?user=max&passwort=Mustermann
Code:
{"uid":"31299"}

Vielen Dank schon mal an dieser Stelle. ^^
 
Danke, aber ich verstehe davon fast nix.
Ich möchte anmerken, dass ich ein blutiger Anfänger in Java bin.

Gibt es vielleicht eine Deutsche Methode mit sehr gutem Beispiel?
 
Also, es gibt eine Library namens commons-httpclient

Die nutzt man so :

Code:
		DefaultHttpClient client = new DefaultHttpClient();
		HttpGet get = new HttpGet(
				"http://localhost:8080/vehicledemo/rest/vendor/" + name);
		HttpResponse response = client.execute(get);

		if (response.getEntity() == null) {
			return null;
		}
		
// Möglichkeit 1 : mit JSON
                String json = response.getEntity().getContent(); // Hier würde JSON kommen

// Möglichkeit 2 : ohne JSON mit XML
		VendorDTO vendor = JAXB.unmarshal(response.getEntity().getContent(),
				VendorDTO.class); // Hier würde mann JAXB nutzen
		return vendor;

Damit kannst Du auf einfachem Wege zunächst mal das JSON herunterladen. Die Library gibt es unter apachi-commons oder mit folgenden Maven Koordinaten :

Code:
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.2-beta1</version>			
		</dependency>

Du kannst Das Jarfile auch über mvnrepository suchen und dann herunterladen und einbinden.

Danach solltest Du Dich mit JSON beschäftigen.
 
Wenn ich das so mache wie du sagst bekomme ich lauter Fehler! (siehe Anhang)

PS: Ich verwende Java 7
 

Anhänge

  • java_problem_httpclient.png
    java_problem_httpclient.png
    161,1 KB · Aufrufe: 27
Yup,

da fehlt mindestens ein Import für die Response ;-) Wichtig ist auch die Version.

Und ein Tip zum Schluss zur Benamung :

public class MeineKlasseHatCamelCase {

MeineKlasseHatCamelCase meineKlasseHatCamelCase;

}

ist eine gängige Java-Konvention, d.h. mehr Entwickler verstehen Deinen Code,wenn Du Dich daran hälst und können Dir potentiell helfen.

Grüße
gore
 
es fehlt 'name' und HttpResponse findest du unter org.apache.http.HttpResponse. das gehört zu den core-Klassen, nicht zu client.

Gruß
Peter
 
Zuletzt bearbeitet:
Okay, und wie mache ich das ganze Thema so das ich die Get Anfragen verschicke?

Also eine Seite z.B.

Titel1 und Titel2 braucht und ich diese an meine Seite via Get an die Seite schicken möchte?
 
beispielsweise so könnte es gehen:

Java:
String getString(String titel1, String titel2){
    String host = "theHost";
    String path = "/path/to/resource";

    StringBuilder queryBuilder = new StringBuilder("Title1=");
    queryBuilder.append(titel1).append("&").append("Title2=").append(titel2);

    return sendRequest(host, path, queryBuilder.toString());
}

String sendRequest(String host, String path, String query){
    DefaultHttpClient client = new DefaultHttpClient();
    int port = 80; //vermutlich

    HttpGet get = new HttpGet(new URI("http", null, host, port, path, query, null) );

    HttpResponse response = client.execute(get);

    StatusLine statusLine = response.getStatusLine();

    if (statusLine.getStatusCode() >= 300) {
         throw new HttpResponseException(statusLine.getStatusCode(), statusLine.getReasonPhrase());
    }

    HttpEntity entity = response.getEntity();

    return entity == null ? null : EntityUtils.toString(entity);
}

Dies sollte den JSON-String von dem Server zurückgeben, den du dann bearbeiten kannst.

der Code muss noch durch exception-handling ergänzt werden, das hab ich mal weggelassen wegen der Übersichtlichkeit.

Gruß
Peter
 
Zurück