【问题标题】:Pull list from SOAP web service从 SOAP Web 服务中提取列表
【发布时间】:2013-05-01 12:31:55
【问题描述】:

如何在 Java 中的 SOAP Web 服务中将数组列表从服务器端拉到客户端?

例子:

服务器包含:书籍列表

Client : request 所有书籍的列表,在 serverresponse 书籍列表中应该返回客户。

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

【问题讨论】:

  • 没用..它们是不符合我要求的简单教程。
  • 有人知道答案吗?
  • 那你可能需要再看看你的问题。它很广泛,并没有指出您可能已经尝试过哪些工作。请查看常见问题解答以获取有关好问题的提示。
  • 如果您想回答您的问题,请添加以下内容:您的服务器是否已经实现了 Web 服务,或者您是否正在尝试同时实现这两者?如果您同时实施这两种方法,您是否尝试过 5 分钟的 JAX-WS 教程(例如 java.dzone.com/articles/jax-ws-hello-world)?如果你觉得你需要的比这更复杂,那有什么不同呢?你还想做什么?

标签: java web-services soap soap-client


【解决方案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

【讨论】:

    【解决方案2】:

    您不能使用 List,因为接口类型不允许在 web 服务通信中使用(作为操作的返回类型和参数)。

    您需要指定一个列表实现,例如 ArrayList。

    Book 也不能是接口,它的所有字段都必须是非接口类型。您不能在任何地方传递任何接口类型的数据。

    您在尝试运行/部署您的网络服务时是否有任何异常?如果是这样,你为什么不提?

    如果你只是不知道如何编码,为什么你没有尝试使用 List/ArrayList/WhateverList 作为常规类型,如 String ?

    【讨论】:

    • "你不能使用 List,因为接口类型不允许在 web 服务通信中(作为操作的返回类型和参数)。"这不是真的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    相关资源
    最近更新 更多