Возврат потока из службы на основе REST WCF в приложение Silverlight - PullRequest
1 голос
/ 02 января 2012

Я создал следующий контракт метода, который возвращает Stream из службы на основе REST WCF:

[OperationContract, WebGet(UriTemplate = "path/{id}")]
Stream Get(string id);

Реализация:

public Stream Get(string id)
{
    WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";

    return new MemoryStream(Encoding.UTF8.GetBytes("<myXml>some data</MyXml>"));
}

A. Как я могу получить доступ к этому методу, используя WebRequest?

Поскольку это звучит как такой простой вопрос, я подозреваю, что, возможно, я лаю не на том дереве ... может быть, возвращение XmlElement - лучший подход.

B. Каков рекомендуемый способ возврата необработанного XML из службы на основе REST WCF?

1 Ответ

1 голос
/ 10 октября 2013

Сначала я отвечу на ваш второй вопрос

Каков рекомендуемый способ возврата необработанного XML из службы на основе WCF REST?

Обычно нет рекомендуемого способа.Концепция RESTful API абстрагируется от формата данных.При возврате Stream из службы WCF на основе HTTP я бы цитировал эту статью MSDN

Поскольку метод возвращает поток, WCF предполагает, что операция имеет полный контроль над байтами, которыевозвращаются из операции службы, и он не применяет форматирование к возвращаемым данным.

И чтобы ответить на ваш первый вопрос , приведен фрагмент кода, который может вызвать вашреализация

var request = (HttpWebRequest)WebRequest.Create("location-of-your-endpoint/path/1");
request.Method = "GET";

using (var webResponse = (HttpWebResponse) request.GetResponse())
{
    var responseStream = webResponse.GetResponseStream();
    var theXmlString = new StreamReader(responseStream, Encoding.UTF8).ReadToEnd();

    // now you can parse 'theXmlString'
}
...