XML формат в WCF REST запрос и ответ - PullRequest
1 голос
/ 10 февраля 2011

Я настроил службу WCF, которая будет принимать как JSON, так и XML одним и тем же методом и которая поддерживает SOAP и REST.

JSON работает нормально, но я не знаю, как должен выглядеть XML.

Интерфейс выглядит следующим образом:

[ServiceContract]
public interface IWebService
{
    [OperationContract]
    [WebInvoke(BodyStyle = WebMessageBodyStyle.Bare)]
    string[] EchoArray(string[] stringArray);
}

Если возможно, я бы хотел сохранить XML как можно более простым, без пространств имен, например:

<stringArray>
    <string>hello</string>
    <string>hola</string>
</stringArray>

Ответ должен быть простым.

Если это что-то меняет, я делаю все это в коде, без какого-либо web.config.

Это так, чтобы я мог использовать рабочую роль Azure.

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Я решил пойти с обернутым запросом вместо простого (потому что другой метод требовал этого) и выяснил, как его отформатировать.

Сначала я изменил

[ServiceContract] 

на

[ServiceContract(Namespace = "")]

Затем это сработало:

<EchoArray>
    <stringArray xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <a:string>hello</a:string>
        <a:string>hola</a:string>
    </stringArray>
</EchoArray>

Возможно, это будет работать без запросатак же, но для согласованности я также обернул этот метод.

0 голосов
/ 10 февраля 2011

Если вы хотите контролировать, как выглядит XML, вы можете сделать это:

[ServiceContract]
public interface IWebService
{
    [OperationContract]
    [WebInvoke(BodyStyle = WebMessageBodyStyle.Bare)]
    StringArray EchoArray(StringArray stringArray);
}

public class StringArray : IXmlSerializable {
        public XmlSchema GetSchema() {
            return null;
        }

        public void ReadXml(XmlReader reader) {
            // However you have formatted it
        }

        public void WriteXml(XmlWriter writer) {
            // However you want it formatted
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...