Вернуть более одного значения из WebService - PullRequest
0 голосов
/ 23 декабря 2009

Я должен вернуть много значений обратно в мое приложение Windows из моего веб-сервиса. Но как бы я вернул больше, чем просто одну строку / int / boolean из моего WebService в мое приложение. Как мне вернуть коллекцию, keyValuePair или, что еще лучше, DataSet? Или это просто невозможно?

спасибо :)

Ответы [ 4 ]

2 голосов
/ 23 декабря 2009

любой сериализуемый класс может быть возвращен из веб-службы

1 голос
/ 23 декабря 2009

Лучший метод, который я использовал с веб-сервисами, - возвращать XML в виде строки. Таким образом, нет проблем с совместимостью, и анализ XML достаточно прост.

1 голос
/ 23 декабря 2009

Если ваш веб-сервис написан на ASP.NET, это так же просто, как установить тип возврата из вашего веб-сервиса как более сложный тип. Поддерживается большинство сериализуемых типов.

0 голосов
/ 23 декабря 2009

В том же ключе, что и при возврате XML, если вы возвращаетесь в код JavaScript, вы можете рассмотреть возможность возврата вашего сложного типа, сериализованного в JSON.

Вот метод расширения, который делает это действительно простым ...

<Extension()> Public Function ToJSON(Of T As Class)(ByVal target As T) As String
    Dim serializer = New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(T))
    Using ms As MemoryStream = New MemoryStream()
        serializer.WriteObject(ms, target)
        ms.Flush()

        Dim bytes As Byte() = ms.GetBuffer()

        Dim json As String = Encoding.UTF8.GetString(bytes, 0, bytes.Length).Trim(Chr(0))

        Return json
    End Using
End Function

Тогда в вашей службе передачи данных вы можете просто позвонить

Return MyObject.ToJSON
...