Android Restlet не возвращает данных JSON
Я создаю веб-сервер на своем устройстве Android, и все, кажется, работает нормально, за исключением того факта, что Джексон не конвертирует мои объекты в JSON. Когда я выполняю успешный (200) HTTP-запрос из браузера на моем устройстве Android, я не получаю данные JSON на вкладке сети (см. Ответ в Google Chrome). Я зарегистрировал конвертер Джексона в качестве документа и то, что были рассмотрены в предыдущих вопросах Stackru. Это не похоже на работу, и я не получаю никакой ошибки. Есть идеи, что я делаю не так? Я надеюсь, что здесь достаточно информации для вас, гении, в противном случае, дайте мне знать, что еще вам нужно.
Обратите внимание, я также попробовал GSONConverter
Изменить: я заметил, что сущность внутри ответа всегда нулевой
WebServer.java
package com.android.restlettest;
import org.restlet.Component;
import org.restlet.data.Protocol;
public class WebServer {
Component component;
WebServer() {
component = new Component();
component.getServers().add(Protocol.HTTP, 9001);
component.getDefaultHost().attach("", new MyApplication());
}
void start() {
try {
System.out.println("Starting the WebServer");
component.start();
} catch(Exception e) {
System.out.println("Exception caught: " + e);
}
}
void stop() {
}
}
MyApplication.java
package com.android.restlettest;
import org.restlet.Application;
import org.restlet.Restlet;
import org.restlet.routing.Router;
import org.restlet.engine.Engine;
import org.restlet.ext.gson.GsonConverter;
import org.restlet.ext.jackson.JacksonConverter;
public class MyApplication extends Application {
MyApplication() {
super();
Engine.getInstance().getRegisteredConverters().add(new JacksonConverter());
//Engine.getInstance().getRegisteredConverters().add(new GsonConverter());
}
@Override
public synchronized Restlet createInboundRoot() {
Router router = new Router(getContext());
router.attach("/", IndexResource.class);
router.attach("/report/log", LogServerResource.class);
return router;
}
}
LogServerResource.java
public class LogServerResource extends ServerResource implements ILogResource {
@Get("json")
public Log retrieve() {
Log[] list = new Log[2];
Log log1 = new Log("test.log", "alksdjf32984u23jfsdv", 0);
list[0] = log1;
return list[0];
//return "{\"resource\": \"log\"}";
}
}
Log.java
package com.android.restlettest;
import java.io.Serializable;
public class Log implements Serializable {
private static final long serialVersionUID = 1L;
public String data;
public String name;
public int id;
public Log() {
}
public Log(final String name, final String data, final int id) {
super();
this.name = name;
this.data = data;
this.id = id;
}
}
1 ответ
В итоге я нашел кого-то, у кого была похожая проблема. Мне не хватало некоторых библиотек, которые нужно было добавить. Я прошу прощения за тратить ваше время.