我正在尝试创建一个liftweb休息服务器,接受POST
个小内部测试请求,并通过Spring框架RestTemplate#postForObject("http://localhost:9090/api/validate/", request, String.class);
调用它。我经历了Simply liftweb's Chapter 11 REST。
我的RestController.scala
13 object RestController extends RestHelper {
14 val data = LiftRules.loadResourceAsXml("/ValidationReply.xml");
21 serve {
22 case "api" :: "validate" :: _ XmlPost xml -> _ => <system>
26 <id>TEST</id>
27 <name>PILOT</name>
28 <version>1</version>
29 <ip_address>192.168.2.18</ip_address>
30 <connector>
31 <id>UPD</id>
32 </connector>
33 </system>
124 case JsonGet("api" :: "validate" :: _, _) => JString("Validated")
125 }
126 }
当我使用postUrl = "http://localhost:9090/api/validate"
请求服务器时,我收到未找到错误响应
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>The Requested URL /api/validate was not found on this server</body>
</html>
当restUrl = "http://localhost:9090/api/validate"
时,我会通过回复"Validated"
收到第二个api。如何在liftweb中发出POST
请求?
答案 0 :(得分:1)
您所拥有的是寻找XML的POST
。作为per the source,
它通过定义TestPost提取器的特征传递。 请求是POST,在帖子体中有JSON或XML数据 在响应中需要JSON或XML的东西。
我不确定您是在发出请求还是实际发送数据。但是,假设您只是发布帖子请求,我会尝试在正文中发布XML。否则,您可以尝试使用Post
代替XmlPost
重写规则,例如:
case Post("api" :: "validate" :: Nil, req) =>
<system>
<id>TEST</id>
<name>PILOT</name>
<version>1</version>
<ip_address>192.168.2.18</ip_address>
<connector>
<id>UPD</id>
</connector>
</system>