2011-10-27 4 views
2

나는이 방법으로 아래와 같이 RESTful 서비스를 구축하고 대한 클라이언트 통과 매개 변수 (참고 : 나는 ASPNETCompatilibilityMode이 true로 설정되어) : 이제어떻게 편안 WCF 서비스

[WebInvoke] 
string TestMethodA() 
{ 
     string test = HttpContext.Current.Request.Form["xml"]; 
} 

[WebInvoke] 
string TestMethodB(string res) 
{ 
     string xml = res; 
} 

의 클라이언트 구축 순서는 다음 작업을 수행 할 MethodA에 매개 변수를 전달합니다 :

request.AddParameter("xmlString", HttpUtility.HtmlEncode(requestBody)); 

그리고 MethodB 메시지를 보내기 위해 내가 다음을 수행하십시오

request.AddParameter("text/xml",requestBody, ParameterType.RequestBody); 

이제 질문은 :

매개 변수를 전달하는 방법에 대해 고객이 어떻게 알 수 있습니까? 클라이언트는 서버 구현을 인식하지 못합니다.

요청을 보내는 클라이언트가 RestSharp API를 사용하고 있습니다.

+0

귀하의 서비스는 일반적으로 이상적이지 않은 인프라 (이 경우 요청 본문에 표시되는 HTTP)에 대한 지식이 있습니다. TestMethodA가 문자열을 취한 다음 항상 메소드를 같은 방식으로 호출하는 것이 아닌가? 그렇게하면 HTTP 바인딩에서 호스팅하지 않아도 서비스가 작동하고 클라이언트는 서비스를 호출하는 방법을 알아야하는 한 가지 방법 만 사용할 수 있습니다. – kmp

답변

0

MethodB()는 문자열을 취하기 때문에 WCF는 어떻게 보이는지 알지 못합니다. 그것은 XML, JSON, 자유 텍스트가 될 수 있습니다. 구현시에는 요청을 형식화하는 방법을 문서화하고 클라이언트를 구현하는 사람에게 요청을 전달하면됩니다.

더 나은 방법은 C# 개체를 만들고 적절한 직렬화 특성으로 표시 한 다음이를 MethodB()에 대한 매개 변수로 사용하는 것입니다. 예를 들면 다음과 같습니다.

이렇게하면 WCF 인프라에서 자동으로 인수를 구문 분석 할 수 있습니다. 또한 WCF에서이 도움말 문서를 자동 생성하도록 할 수 있습니다.