从SOAP Web服务中提取列表

时间:2013-05-01 12:31:56

标签: java web-services soap soap-client

如何在Java Web服务中从服务器端向客户端提取数组列表?

示例:

服务器包含:图书清单

客户端请求所有图书的列表,在服务 服务器图书清单中应返回客户端。

我将获得服务器响应中的书籍列表,然后如何在客户端使用该列表?

2 个答案:

答案 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?