如何在Java Web服务中从服务器端向客户端提取数组列表?
示例:
服务器包含:图书清单
客户端:请求所有图书的列表,在服务 服务器图书清单中应返回客户端。
我将获得服务器响应中的书籍列表,然后如何在客户端使用该列表?
答案 0 :(得分:1)
简而言之:
服务:
package webservice;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public class BookWebService {
List<Book> allBooks = new ArrayList<>();
@WebMethod
public List<Book> getAllBooks() {
return allBooks;
}
@WebMethod
public void addBook (Book book) {
this.allBooks.add(book);
}
}
客户:
package root;
import java.util.List;
import javax.xml.ws.WebServiceRef;
import webservice.Book;
import webservice.BookWebService;
import webservice.BookWebServiceService;
public class MainClient {
@WebServiceRef(wsdlLocation="http://localhost:8080/LibraryWs/BookWebServiceService?wsdl")
private static BookWebServiceService service;
public static void main(String[] args) {
MainClient cl = new MainClient();
cl.start();
}
public void start() {
service = new BookWebServiceService();
BookWebService port = service.getBookWebServicePort();
System.out.println("All books: "+port.getAllBooks());
Book book = new Book();
book.setTitle("Journey");
book.setPages(233);
port.addBook(book);
System.out.println("All books: "+port.getAllBooks());
}
}
完整的详细步骤可在此处获得: JAX-WS Simple Client and Service
答案 1 :(得分:0)
您不能使用List,因为Web服务通信中不允许使用接口类型(作为操作的返回类型和参数)。
您需要指定一个列表实现,例如ArrayList。
Book也不能是接口,其所有字段必须是非接口的类型。您无法在任何地方传递任何接口类型的数据。
尝试运行/部署Web服务时是否有任何异常?如果是这样,为什么你没有提到它?
如果你只是不知道如何编码,为什么你只是没有尝试使用List / ArrayList / WhateverList作为常规类型如String?