我能够在rest xml服务中使用基于xml的请求。下面是示例代码,说明如何在rest rest服务中使用XML请求。
现在,我想使用soap请求XML,并且我知道SOAP是一种消息传递协议。它只能由基于SOAP的its服务使用,但是它使用XML数据格式来声明其请求和响应消息,这依赖于XML。我只想在rest rest服务中重新引用它基于XML的请求。
在基于rest的web服务中是否有满足这一需求的方法?
下面是我想在rest rest服务中使用的示例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 rest服务中使用XML请求的示例代码。
示例代码:
用于消费XML请求的Rest端点
@Path("/processOrder")
@POST
@Produces("application/xml")
@Consumes("application/xml")
public OrderResponse processOrder(Order order) {
return processUser(order);
}
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;
}
}
OrderResponse.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>
发布于 2022-01-23 06:09:23
Rest主要基于JSON文档,通常是大多数实现的主要标准。即使如此,没有什么可以阻止您将application/json内容类型发送到您的HTTP服务器,而不是发送application/xml并以这种方式进行API处理。
要处理XML的SOAP子集中编码的消息,您需要检索请求正文文本,并通过某种SOAP消息处理引擎处理它。对于返回消息,您必须以同样的方式工作,处理所需消息的类型,获取XML并将其返回给客户端。
@Path("/processOrder")
@POST
@Produces("application/xml")
@Consumes("application/xml")
public String processOrder(String order) {
String result = "";
/* Some kind of the logic to process SOAP Messages. */
return result;
}
最后,我可以推荐一个库,这样您就可以实现这个逻辑了,它是Jakarta,从这里您可以处理从请求中获得的SOAP消息。
https://stackoverflow.com/questions/70688232
复制