我可以在rest webservice中使用基于xml的请求。下面是我如何在rest webservice中使用XML请求的示例代码。
现在,我想使用SOAP请求XML,我知道SOAP是一种消息传递协议。它只能由基于SOAP的Web服务使用,但它使用XML数据格式来声明其请求和响应消息,依赖于XML架构。我只想在其余Web服务中接收其基于XML的请求。
在基于休息的网络服务中,有没有什么方法可以满足这种需求?
下面是我想在rest webservice中使用的示例soap请求。
SOAP请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:int="http://example.com/">
<soapenv:Header/>
<soapenv:Body>
<order>
<order-no></order-no>
<custmer></custmer>
<address></address>
<bill-amount></bill-amount>
</order>
</soapenv:Body>
</soapenv:Envelope>
下面是我如何在我的rest webservice中使用XML请求的示例代码。
样品代码:
使用XML请求的Rest终结点
@Path("/processOrder")
@POST
@Produces("application/xml")
@Consumes("application/xml")
public OrderResponse processOrder(Order order) {
return processUser(order);
}
订单.java
@XmlRootElement(name = "order")
public class Order {
private int orderNo;
private String custmer;
private String address;
private String amount;
@XmlAttribute(name = "order-no")
public int getOrderNo() {
return orderNo;
}
public void setOrderNo(int orderNo) {
this.orderNo = orderNo;
}
@XmlElement
public String getCustmer() {
return custmer;
}
public void setCustmer(String custmer) {
this.custmer = custmer;
}
@XmlElement
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@XmlElement(name = "bill-amount")
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
}
订单响应.java
@XmlRootElement(name = "orderResponse")
public class OrderResponse{
private String response;
@XmlElement(name = "response")
public String getResponse() {
return response;
}
public void setResponse(String response) {
this.response= response;
}
}
XML请求:
<order>
<order-no></order-no>
<custmer></custmer>
<address></address>
<bill-amount></bill-amount>
</order>
XML回应:
<orderResponse>
<response></response>
</orderResponse>
1条答案
按热度按时间deikduxw1#
Rest API主要基于JSON文档,通常是大多数实现的主要标准。即使如此,也没有什么能阻止您将application/json内容类型发送到HTTP服务器,而不是发送application/xml并让API以这种方式处理它。
要处理以XML的SOAP子集编码的消息,您需要检索请求正文文本并通过某种SOAP消息处理引擎处理它。对于返回消息,您必须以相同的方式工作,处理所需的消息类型,获取XML并将其返回给客户端。
最后,我可以推荐一个库,以便您可以实现此逻辑,该库是Jakarta SOAP,您可以从这里处理从请求中获得的SOAP消息。
链接到库:https://eclipse-ee4j.github.io/metro-saaj/