Как клиент передает параметр в службу RESTful WCF - PullRequest
2 голосов
/ 27 октября 2011

Я создаю службу RESTful, как показано ниже, двумя способами (ПРИМЕЧАНИЕ. У меня для ASPNETCompatilibilityMode установлено значение true):

[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.

1 Ответ

0 голосов
/ 16 марта 2012

Поскольку MethodB () принимает строку, WCF понятия не имеет, как она должна выглядеть. Это может быть XML, JSON, свободный текст, что угодно. В вашей реализации вам просто нужно будет документировать, как отформатировать запрос, и передать его тому, кто внедряет клиент.

Лучшим подходом было бы создать объект C #, пометить его соответствующими атрибутами сериализации и использовать его в качестве параметра для MethodB (). Например:

[DataContract]
public class MyDataContract{

    [DataMember]
    public string SomeString{get;set;}

    [DataMember]
    public int SomeNumber{get;set;}    
}

public void MethodB(MyDataContract arguments){
  //do stuff

}

Это позволит инфраструктуре WCF автоматически анализировать аргументы. Вы также можете получить справочную документацию для WCF по автоматическому созданию.

...