gpt4 book ai didi

Java Web 服务 - 接受 XML 输入

转载 作者:行者123 更新时间:2023-11-29 05:49:16 25 4
gpt4 key购买 nike

我在使用 Java Web 服务时遇到问题,因为我无法接受来自表单(由另一组开发)的 XML 输入。

在我不确定我是否正确设置它之前没有使用过这样的服务,目前我想要它做的就是连接,所以方法是空的。

package com.what.service;

import java.io.File;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.swing.text.*;



@WebService

public class HouseGetForm {

@WebMethod
public String getRooms(String rooms) {
return "Number of Rooms: " + rooms;
}

@WebMethod
public String getHouseType(String house) {
return "House Type " + house;
}

@WebMethod
public String getKitchenAppliances(String appliance) {
return "Appliances " + appliance;
}

我还有我的“服务器”类,它几乎是直接从教程中获取的。

package com.what.service;

import javax.xml.ws.Endpoint;


public class Server {

public static void main(String[] args) {

Endpoint.publish("http://localhost:9898/HouseGetForm", new HouseGetForm());

System.out.println("House Get form Initailised.");

System.out.println("Server Started...");


}

}

你看,我不太确定整个过程是如何进行的,所以我有点摸不着头脑。提交表单时,XML 是如何传递的?作为整个文档,我必须在 Web 服务上找到各个字段值?如果是这样,这是怎么做到的?

我确实需要通俗地了解如何在 Java Web 服务中获取 XML 输入(即表单数据),然后在 Java Web 服务方法中对其进行操作。

最佳答案

Not having worked with services like this before I am unsure whether I have setup it up correctly, currently all I want it to do is connect, so methods are empty.

我建议您为此阅读 REST jersey 库教程。请阅读本文REST


基本上,您的表单通过 HTTP 提交 XML 文件而不是 HTML 文件。如果您想通过网络服务客户端 (REST) 接收 XML 数据。你必须声明一个方法

Consumes

XML 数据。例如

@WebMethod
@Consumes("application/xml")
@Produces("application/xml")
public String test(String xmlData){
System.out.println(xmlData); //reads xml data
returns "<?xml version="1.0" encoding="ISO-8859-1"?><note>Hello!</note>"; //this will display the legit XML file on to browser instead of HTML document
}

Example of the legit xml file displayed on browser

此外,您可以使用名为 JAXB 的强大库来获取此 xmlData 并立即将其转换为 JavaBean 对象。另外让我向您展示总体上发生了什么(我想这就是您要问的)

这是一个 WebMethod。这是您的客户在想要使用您的网络服务时将要调用的内容。

@WebMethod
@Consumes("application/xml")
@Produces("application/xml")
public String test(Person person){
System.out.println(person.getFirstName()); //reads xml data
returns "<?xml version="1.0" encoding="ISO-8859-1"?><note>Hello!</note>"; //this will display the legit XML file on to browser instead of HTML document
}

这是一个从客户端发送的 person 的 XML 数据示例

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Person>
<firstName>Temp</firstName>
<lastName>Nick</lastName>
</Person>

当这个文件到达方法test(Person person)时;使用 JAXB,此 XML 数据转换为下面的 Person 对象

  @XmlRootElement
public class Person {
private String firstName;
private String lastName;

public String getFirstName(){
return fristName;
}
@XmlElement
public void setFirstName(String firstName) {
this.firstName = firstName;
}

//another getter and setter for lastName

}

关于Java Web 服务 - 接受 XML 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14602272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com