Mar*_*eon 84
事实证明,你根本不需要做太多事情.
请参阅下文 - 该参数x将包含完整的HTTP正文(在我们的示例中为XML).
@POST
public Response go(String x) throws IOException {
...
}
Run Code Online (Sandbox Code Playgroud)
小智 17
您可以使用@Consumes注释来获取完整的正文:
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
@Path("doc")
public class BodyResource
{
@POST
@Consumes(MediaType.APPLICATION_XML)
public void post(Document doc) throws TransformerConfigurationException, TransformerException
{
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.transform(new DOMSource(doc), new StreamResult(System.out));
}
}
Run Code Online (Sandbox Code Playgroud)
注意:请勿忘记请求的"Content-Type:application/xml"标头.
use*_*428 14
使用以下单个代码尝试:
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@Path("/serviceX")
public class MyClassRESTService {
@POST
@Path("/doSomething")
public void someMethod(String x) {
System.out.println(x);
// String x contains the body, you can process
// it, parse it using JAXB and so on ...
}
}
Run Code Online (Sandbox Code Playgroud)
尝试休息服务的网址结束..../serviceX/doSomething
Gle*_*nnV 10
由于您在xml中传输数据,因此您也可以(联合国)直接从/向pojos进行编组.
在泽西用户指南中有一个示例(以及更多信息),我在这里复制:
POJO与JAXB注释:
@XmlRootElement
public class Planet {
public int id;
public String name;
public double radius;
}
Run Code Online (Sandbox Code Playgroud)
资源:
@Path("planet")
public class Resource {
@GET
@Produces(MediaType.APPLICATION_XML)
public Planet getPlanet() {
Planet p = new Planet();
p.id = 1;
p.name = "Earth";
p.radius = 1.0;
return p;
}
@POST
@Consumes(MediaType.APPLICATION_XML)
public void setPlanet(Planet p) {
System.out.println("setPlanet " + p.name);
}
}
Run Code Online (Sandbox Code Playgroud)
生成/消费的xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<planet>
<id>1</id>
<name>Earth</name>
<radius>1.0</radius>
</planet>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128404 次 |
| 最近记录: |