我想建立一个简单的演示项目来学习如何使用Restygwt。我遵循了这个教程:https://ronanquillevere.github.io/2014/03/16/gwt-rest-app.html到目前为止,我在我的客户端上得到了这个:在我的SearchPresenter中,当我单击一个按钮时,方法search chBook(String isbn)会被触发
@Override
public void searchBook(String isbn) {
clientContext.getBookStoreClient().getBook(isbn, new MethodCallback<List<Book>>() {
@Override
public void onFailure(Method method, Throwable exception) {
Window.alert("Failure");
GWT.log(exception.getMessage());
GWT.log(stackTraceToString(exception));
}
@Override
public void onSuccess(Method method, List<Book> response) {
for (Book book : response) {
Window.alert(book.getIsbn() + " " + book.getAuthor());
}
}
});
}
private String stackTraceToString(Throwable e) {
StringBuilder sb = new StringBuilder();
for (StackTraceElement element : e.getStackTrace()) {
sb.append(element.toString());
sb.append("\n");
}
return sb.toString();
}
我的书店客户端看起来像这样:
@Path("/api/bookstore/books")
public interface BookstoreClient extends RestService{
@GET
public void getBooks(MethodCallback<List<Book>> callback);
@GET
@Path("/{isbn}")
public void getBook(@PathParam("isbn") String isbn, MethodCallback<List<Book>> callback);
}
我的服务器上的BookResource:
@Path("books")
public class BookResource {
Map<String, Book> books;
public BookResource() {
books = new HashMap<>();
Book book1 = new Book("1", "Max Mustermann");
books.put(book1.getIsbn(), book1);
Book book2 = new Book("2", "Erika mustermann");
books.put(book2.getIsbn(), book2);
}
@GET
@Produces("application/json")
public Collection<Book> getBooks() {
return books.values();
}
@GET
@Path("/{isbn}")
@Produces("application/json")
public Book getBook(@PathParam("isbn") String isbn) {
return books.get(isbn);
}
}
还有我共享包中的书
public class Book {
private final String isbn;
private final String author;
@JsonCreator
public Book(@JsonProperty("isbn")String isbn, @JsonProperty("author")String author) {
this.isbn = isbn;
this.author = author;
}
public String getIsbn() {
return isbn;
}
public String getAuthor() {
return author;
}
}
但是如果我单击GUI上的按钮,我会跳转到onFailure并获得异常:
响应不是有效的JSON文档
Unknown.Throwable_4_g$(GWT_Selenium-0.js@8:4312)
Unknown.Exception_4_g$(GWT_Selenium-0.js@18:4550)
Unknown.RuntimeException_4_g$(GWT_Selenium-0.js@18:4597)
Unknown.new ResponseFormatException_2_g$(GWT_Selenium-0.js@25:51000)
Unknown.parseResult_2_g$(GWT_Selenium-0.js@23:33367)
Unknown.parseResult_1_g$(GWT_Selenium-0.js@15:33355)
Unknown.onResponseReceived_0_g$(GWT_Selenium-0.js@27:33312)
Unknown.fireOnResponseReceived_0_g$(GWT_Selenium-0.js@17:14339)
Unknown.onReadyStateChange_0_g$(GWT_Selenium-0.js@28:14647)
Unknown.<anonymous>(GWT_Selenium-0.js@18:30998)
Unknown.apply_0_g$(GWT_Selenium-0.js@28:5498)
Unknown.entry0_0_g$(GWT_Selenium-0.js@16:5554)
Unknown.<anonymous>(GWT_Selenium-0.js@14:5534)
但如果我转到url:
http://127.0.0.1:8888/api/bookstore/books
我得到以下显示在我的浏览器
[{"isbn":"1","author":"Max Mustermann"},{"isbn":"2","author":"Erika mustermann"}]
我是否错过了一些东西或搞砸了RestService的实现?提前感谢您的任何评论,您的帮助是附件
您的问题是当您单击一个按钮时发生错误,并且该按钮通过isbn进行搜索-它不像您在浏览器中测试的那样调用GET /api/bookstore/books
。这就是它实际做的:
@GET
@Path("/{isbn}")
public void getBook(@PathParam("isbn") String isbn, MethodCallback<List<Book>> callback);
此客户端方法需要一个列表
@GET
@Path("/{isbn}")
@Produces("application/json")
public Book getBook(@PathParam("isbn") String isbn)
它返回一本书,而不是包装在列表中。这可能是您错误的来源。
我们的遗留应用程序使用GWT RPC,我们想使用RestyGWT,有人能给我提供一个将GWT RPC转换为RestyGWT的示例吗?
我的newInstance方法如下所示: 因此,正如您所看到的,我需要知道什么是HTTP状态代码。通过将generic更改为,我无法获得http状态代码。你有什么建议?
检查提供的参数是否是有效的JSON。 使用 JSON.parse() 和 try... catch 块来检查提供的参数是否是有效的JSON。 const isValidJSON = obj => { try { JSON.parse(obj); return true; } catch (e) { return false; } }; isValidJSON(
我写了一个php脚本,它产生一个ics文件输出: BEGIN:VCALENDAR PRODID:-//hacksw/handcal//NONSGML v1.0//EN VERSION:2.0 BEGIN:VEVENT DTSTAMP:20120801000000z DTSTART:20120801000000z DTEND:20120801000000z 摘要:测试 组织者:Me UID:Me E
我有一个gwt客户端,现在我正在尝试将用户的文件(图像)传输到服务器并保存它们。你能解释一下如何通过RestyGWT使用FileUpload从GWT传输文件吗。我发现有必要使用FormPanel,我认为我必须使用setAction()和submit()方法,但我使用的是RestyGWT,我不明白如何通过RestyGWT传输数据? 客户端: 服务器端:
重新邮寄: 目标: 我正在使用GWT,并试图使用RestyGWT客户端调用现有的Twitter REST服务 问题: 我没有收到对“https://api.twitter.com/1.1/statuses/mentions_timeline.json”或其他json的GET请求的响应。 我尝试过的事情: 我看过RestyGWT的文档,但我没有找到一个具体的例子来说明如何调用第三方REST服务。尝试