Android: Json-POST Request zu REST Webservice

chamaken

Mitglied
Hi,

ich weiß nicht genau, in welche Sparte diese Frage genau gehört.
Folgendes Problem:

Ich hab mit Hilfe von Jersey einen minimalen REST-Webservice in Java geschrieben, der u.a. folgende POST-Methode enthält:

Java:
@POST
@Path("/test/{json}")
@Consumes("application/json")
@Produces("application/json")
public JSONObject postAllData(@PathParam("json") JSONObject data_json) {

	try {
		data_json.put("last", "last test value");
	} catch (JSONException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return data_json;
}


Diese Methode möchte ich gerne in einer Android-Applikation aufrufen, was ich folgendermaßen versuche (die genaue Adresse habe ich extra nicht veröffentlicht):


Java:
JSONObject json = new JSONObject();
	try {
		json.put("one", "test it once");
		json.put("two", "test it twice");
	} catch (JSONException e1) {
		e1.printStackTrace();
	}

URL = "http://xxx.xxx.xxx.xxx:8080/RestProjekt/rest/test";
		HttpClient httpclient = new DefaultHttpClient();
		HttpPost httpPost = new HttpPost(URL);
		StringEntity s = new StringEntity(json.toString());

		HttpResponse response;
		httpPost.setEntity(s);
		httpPost.setHeader("Accept", "application/json");
		httpPost.setHeader("Content-Type", "application/json");

		response = httpclient.execute(httpPost);
		StatusLine statusLine = response.getStatusLine();
		Log.d(TAG, "Status RestClient POST: " + statusLine.getStatusCode());

Jedoch bekomme ich immer den Fehler 404 angezeigt - was mache ich falsch?

Zur Info:
- die Internet-Permission ist gesetzt (ein GET-Aufruf funktioniert problemlos)
- rufe ich die Methode mitels einer "normalen" Java-Applikation (mit Jersey) auf, funktioniert es

Wäre super, wenn ihr mir helfen könntet 🙂
 
Hast du mal probiert die URL direkt über den Webbrowser anzusprechen? Bekommst du da auch 404 Header?

Wie ich das nun jetzt verstanden habe, nutzt du auch eine Applikation, die als ein "Webserver" arbeitet und die Daten in einem HTTP-Response gibt? Warum nimmst du nicht direkt einen Webserver und lässt die Daten direkt über PHP verarbeiten - Derartiges ist im ein deutiges leichter und vorallem schneller zu visualisieren.
 
Danke für die Antwort, ich hab den Fehler am Freitag noch gefunden.

Nach dem Entfernen der Parameterangabe (@PathParam("json")) und des Pfadteils ({json}) hat alles wunderbar funktioniert:
Java:
@POST
@Path("/test")
@Consumes("application/json")
@Produces("application/json")
public JSONObject postAllData(JSONObject data_json) {
 
    try {
        data_json.put("last", "last test value");
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return data_json;
}

Die Vorgehensweise wurde mir übrigens vorgetragen, keine weiteren Varianten möglich 😉
 

Zurück
Oben