Служба WCF RESTFul - передача XML в виде строки в службу - PullRequest
1 голос
/ 18 апреля 2011

Мне нужно иметь возможность передавать XML в службу RESTFul WCF в виде строки, однако я изо всех сил пытаюсь это сделать. Может кто-нибудь, пожалуйста, дайте мне знать, как я мог это сделать? Он должен быть отправлен в виде строки, я не могу заключить его в договор на передачу данных и т. Д. Пример договора на обслуживание ниже

[OperationContract]
[WebInvoke(Method = "POST",
            UriTemplate = "lookup",
            BodyStyle = WebMessageBodyStyle.Bare,
            ResponseFormat = WebMessageFormat.Xml)]
Stream LookupPostcode(string requestXml);

Большое спасибо заранее

Ответы [ 4 ]

1 голос
/ 18 апреля 2011

Попробуйте использовать XElement или Stream в качестве параметра вашего метода.

[OperationContract] 
[WebInvoke(Method = "POST",
           UriTemplate = "lookup",
           BodyStyle = WebMessageBodyStyle.Bare,
           ResponseFormat = WebMessageFormat.Xml)] 
Stream LookupPostcode(Stream requestXml); 

...

[OperationContract] 
[WebInvoke(Method = "POST",
           UriTemplate = "lookup",
           BodyStyle = WebMessageBodyStyle.Bare,
           ResponseFormat = WebMessageFormat.Xml)] 
Stream LookupPostcode(XElement requestXml); 

... Не уверен, что вы пытаетесь сделать внутри метода, или я мог бы предоставить дополнительную помощь.

1 голос
/ 18 апреля 2011

Это совершенно не по теме, но попытка согнуть WCF, чтобы получить RESTful, будет постоянной битвой, и вы в конечном итоге сдадитесь. Именно ориентированная на сообщения природа WCF на основе RPC- и SOAP-конфигурации configure-all-in-XML затрудняет написание простых служб REST.

Если вы не по уши в своем проекте, попробуйте исследовать другие альтернативы и отказаться от WCF для этой цели.

0 голосов
/ 27 июня 2013

Оборачивание xml в теги CDATA не дает парсеру воспринимать его как xml:

myString = "<![CDATA[<thexml/>]]>"
0 голосов
/ 18 апреля 2011

Это большой взлом, но вы можете обернуть свой XML в тег <string> следующим образом.

 XmlDocument body = new XmlDocument();
 body.Load(...);

 postData = @"<string xmlns='http://schemas.microsoft.com/2003/10/Serialization/'><![CDATA[" + body.OuterXml + "]]></string>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...