2013-09-08 4 views
0

작은 내부 테스트에 대한 POST 요청을 허용하는 liftweb rest 서버를 만들고이를 Spring 프레임 워크 RestTemplate#postForObject("http://localhost:9090/api/validate/", request, String.class);을 통해 호출하려고합니다. 나는 Simply liftweb's Chapter 11 REST을 거쳤다. 내가 postUrl = "http://localhost:9090/api/validate"으로 서버를 요청하면리프트 웹 서버 리프트 서버 POST 요청

내 RestController.scala, 나는

<?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", I라는 두 번째 API를 얻을 발견되지 오류 응답을 얻을

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 } 

입니다 대답은 "Validated"입니다. 리프트 웹에서 POST 요청을하려면 어떻게해야합니까?

+0

당신의 POST URL이 있어야한다 보인다. .xml – Ankur

+0

아니요, 'URL /api/validate.xml was not found'오류가 발생했습니다. – prayagupd

답변

1

갖고 계신 XML이 POST입니다. per the source으로,

은 TestPost 추출기를 정의하는 특성을 통해 전달됩니다. 요청이 POST인지, 게시물 본문에 JSON 또는 XML 데이터가 있으며 응답에 JSON 또는 XML이 필요한 것으로 나타납니다.

방금 ​​요청하는 경우 또는 실제로 데이터를 보내는 경우 확실하지 않습니다. 그러나 게시 요청을한다고 가정하면 본문에 XML을 게시하려고합니다. 그렇지 않으면, 당신은 Post 대신 같은 XmlPost의를 사용하여 규칙을 다시 쓰기 시도 할 수 있습니다 : 'HTTP : // localhost를 : 9090/API/validate.xml`

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> 
+0

위의 API에서'xml'없이 요청해야하지만, url은'xml'의 유무와 관계없이 작동합니다. "case"api "::"validate "도 아니다 : :: _ Post xml -> _ =>' – prayagupd

+1

이게 효과가 있나 : case Post ("api "::"validate ":: Nil, req) => '? – jcern

+0

예, 요청시'xml' 데이터의 유무에 관계없이 작동합니다. \ ,,/답을 수정하십시오, 나는 그것을 받아 들일 것입니다. – prayagupd

관련 문제