Эта проблема
В настоящее время я заменяю GSON на Resty-GWT, чтобы совершать вызовы JSON-RPC из-за различных неприятностей с GSON. Он работает именно так, как я хочу, но я не могу понять, как отправлять свои сообщения, кроме как в String
:
String names_ = "{\"jsonrpc\":\"2.0\",\"method\":\"RegisterValues\",\"params\":[[\"FirstValue\"],\"id\":2}";
Я хотел бы сделать это более разумно, поэтому мне не нужно выписывать все эти значения. Но самое главное, мне нужен простой способ вставить эти параметры. Какой-то способ просто объявить эти свойства в полезной нагрузке моего запроса с легкостью.
Текущий метод
Это String
отправляется через этот вызов:
testService.RegisterValues(names_, new MethodCallback<testService.Response>(){
@Override
public void onFailure(Method method, Throwable exception) {
// TODO Auto-generated method stub
Window.alert(exception.getMessage().toString());
}
@Override
public void onSuccess(Method method, testService.Response response) {
// TODO Auto-generated method stub
Window.alert("Hello" + response.getResult().toString());
}
});
Класс testService
находится здесь:
import javax.ws.rs.POST;
import javax.ws.rs.Produces;
import org.fusesource.restygwt.client.MethodCallback;
import org.fusesource.restygwt.client.RestService;
public interface testService extends RestService {
@Produces("application/json")
@POST
public void RegisterValues(String names_, MethodCallback<Response> callback );
}
Затем обратный вызов отправляется в этот класс ответа, где я могу легко десериализовать данные, извлекая (хотя здесь это не очень важно):
public class Response {
private int id;
private Map<String, Map<String, Integer>> result;
private String error;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
//...etc.