/ / Ein Nachrichtentext-Reader für Java-Typ, Klasse org.json.JSONObject… und MIME-Medientyp, Anwendung / json wurde nicht gefunden - Java, Android, Json, Web-Services, Rest

Ein Nachrichtentextleser für Java-Typ, Klasse org.json.JSONObject… und MIME-Medientyp application / json wurde nicht gefunden - java, android, json, Webservices, rest

Ich versuche, einen Trikot erholsamen Web-Service von Android zu nennen. Mein Android-Code ist

Kundencode:

HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost("http://X.X.X.X:8080/RestfulService/rest/post");
post.setHeader("content-type", "application/json");

JSONObject dato = new JSONObject();
dato.put("email", email);
dato.put("password", password);

StringEntity entity = new StringEntity(dato.toString());
post.setEntity(entity);
HttpResponse resp = httpClient.execute(post);
String rs = EntityUtils.toString(resp.getEntity());
return rs

Webservice-Code

@POST
@Produces({ MediaType.APPLICATION_JSON })
@Consumes({ MediaType.APPLICATION_JSON })
public String AuthMySQL(JSONObject json) {

String password = (String) json.get("password");
String email = (String) json.get("email");

*I am using the string values to get the result from the database*

}

Der Fehler, den ich bekomme, ist ungefähr so com.sun.jersey.api.client.ClientHandlerException: Ein Nachrichtentext-Reader für Java-Typ, Klasse org.json.JSONObject .... und MIME-Medientyp, Anwendung / json wurde nicht gefunden.

Deine Hilfe ist sehr Willkommen

Antworten:

0 für die Antwort № 1

Dies tritt auf, wenn Sie nicht über die richtigen Bibliotheken verfügen, um den json einem POJO ordnungsgemäß zuzuordnen, oder wenn für die Eingabe kein geeignetes POJO vorhanden ist.

Schauen Sie beim Hinzufügen der Jersey-Json-Maven-Abhängigkeit zu deinem Projekt


0 für die Antwort № 2

Wenn Sie keine Bibliothek hinzufügen und nur auf den analysierten JSON zugreifen möchten (d. H. Ohne Zuordnung zu einem POJO), können Sie einfach ein Basic implementieren MessageBodyReader, z.B:

public class JSONObjectMessageBodyReader implements MessageBodyReader<JSONObject> {
@Override
public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
return type == JSONObject.class && mediaType.equals(MediaType.APPLICATION_JSON_TYPE);
}

@Override
public JSONObject readFrom(Class<JSONObject> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException, WebApplicationException {
try {
// Using Apache Commons IO:
String body = IOUtils.toString(entityStream, "utf-8");
return new JSONObject(body);
} catch(JSONException e) {
throw new BadRequestException("Invalid JSON", e);
}
}
}

Dann in Ihrem Webservice-Code:

@POST
public Response doSomething(JSONObject body) {
...
}