【问题标题】:restful webservice with xml or json as parameter以 xml 或 json 作为参数的 restful webservice
【发布时间】:2015-07-02 10:45:48
【问题描述】:

我有一个简单的问题,我一直试图通过办公室受限的互联网连接找出答案,但无济于事。

1) 如何在 java 中创建一个安静的 web 服务,最好使用接受 xml 和/或 json 作为参数的 netbeans,以及如何处理它。

2) 我如何调用这些网络服务。我的意思是我们如何在 url 中传递 xml? 或者有没有其他办法?

如果我必须使用 API,我更喜欢使用球衣。 如果问题太笼统,我很抱歉,但我需要在相对较短的时间内获得所有知识。

【问题讨论】:

  • 如果提供的任何建议的学习链接在您的办公室受到限制怎么办? ;)
  • 我期待……但值得一试
  • 您的两个问题都非常广泛。这让你看起来像是零经验。如果是这种情况,我建议通过教程运行。就我个人而言,我会从user guide 的顶部开始。第一章将让你开始并运行。第三章将更深入地介绍基础知识。第九章将引导您处理 JSON 和 XML。另一种开始使用 Netbeans 的方法(非常快,因此您可以跳过第 1 章)是查看this answer的底部@

标签: java xml web-services rest netbeans


【解决方案1】:

你可以这样做。我目前正在开发执行此操作的 Web 服务。

使用这些注释:

@POST
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Object create(Object object);

在要传递的对象上,可以从 javax.xml.bind.annotation 包中进行注解。这样,java 可以自己编组/解组这些。

@XmlRootElement(name = "Something")
@XmlAccessorType(XmlAccessType.NONE)
public class A {

  private static final long serialVersionUID = 6478918140990163091L;

  @XmlElementWrapper(name = "collectionWrapper")
  @XmlElement(name = "collectionItem")
  private final Collection<Object> domainCollection = new LinkedList<Object>();
}

要访问它,请执行以下操作:

final Builder request = ClientBuilder.newClient().target(getBaseUri()).path("url").request(MediaType.APPLICATION_XML);
return request.post(Entity.entity(param, MediaType.APPLICATION_XML)).readEntity(A.class);

请按照本教程获取示例:http://www.vogella.com/tutorials/REST/article.html

【讨论】:

    【解决方案2】:

    这些是如何执行此操作的一般步骤(我假设您已经安装了 java 和相应的环境变量):

    1) 下载并安装Apache Tomcat。配置 Netbeans 以识别您已提取/安装的 Apache Tomcat 实例。

    2) 下载 jersey jar 文件并将它们添加到您的 Web 项目 from here(链接:Jersey JAX-RS 2.0 RI 包),或者如果您使用 maven,则使用所需的依赖项。不要忘记将项目添加到 Apache Tomcat 服务器。

    3) 在项目的源文件夹中创建一个基于 Jersey 的 java 类。 在每个 restful 函数中,您将定义您将接受哪些数据、如何处理它们以及您将发送什么。这是一个非常基本的例子:

    @Path("/server")
    public class RestServer {
    
       @POST
       @Consumes(MediaType.TEXT_XML)
       @Produces(MediaType.TEXT_XML)
       public String basicPOSTRequest_XMLResponse(String xmlString) {           
          System.out.println("Received: " + xmlString);
          return doSomethingWithString(xmlString);
       }
    }
    

    4) 在 webContent 文件夹中创建一个“index.html”文件,其中包含用于您的 restful 函数的相应 ajax 调用。 (您在 jersey 类中创建的那些)。 在每个 ajax 调用中,您将使用 jQuery 功能发送和接收数据。这是一个基本的 ajax 调用示例:

    function ajaxCall(xmlData) {
    
    $.ajax({
        type: "POST",
        url: _baseURI + "/server",
        contentType: "text/xml",
        data: xmlData,  
        datatype: "text/xml",
        success:
                function (data, textStatus, jqXHR){
                    alert(data);
                },
        error: 
                function (jqXHR, textStatus, errorThrown) {
                    alert("error");
                }
    });
    }
    

    请注意,ajax 只是使用 restful 函数的一种方式。例如,您可以使用另一个可以发送 Http 调用的 java(或任何其他语言)程序来实现。

    5) 从 eclipse 启动 tomcat 服务器。

    6) 通过点击它的 url(通常类似于:'http://localhost:8080/-yourProjectName-')来使用你的 index.html 文件来检查你的项目的宁静功能。

    以上只是指导方针。如果您想在任何步骤中获得更多详细信息,请告诉我以便编辑我的答案。

    【讨论】:

      【解决方案3】:

      您可以参考this链接。我希望可以在您的办公室内访问此链接。

      此外,接受参数的类型是您要求的基础。 接受和响应类型有两个注解,分别是@consume(MediaType)@produce(MediaType)。您还必须指定 MediaType,例如

      MediaType.APPLICATION_JSON

      MediaType.APPLICATION_XML_TYPE

      【讨论】:

        猜你喜欢
        • 2013-07-18
        • 1970-01-01
        • 1970-01-01
        • 2012-08-03
        • 1970-01-01
        • 2013-06-06
        • 1970-01-01
        • 2011-04-07
        • 2013-05-02
        相关资源
        最近更新 更多