#c# #web-services
#c# #веб-службы
Вопрос:
public ArrayList myFunc(string arg1, string arg2)
Я протестировал этот веб-метод в браузере, и он отлично работает.
В клиенте я извлекаю возвращаемое значение из myFunc, выполняя это:
string[] ret = ws.myFunc("arg1", "arg2");
Проблема в том, что ret всегда ничего не содержит, хотя при тестировании в браузере я получил это
<ArrayOfAnyType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<anyType xsi:type="xsd:string">str01</anyType>
<anyType xsi:type="xsd:string">str02</anyType>
</ArrayOfAnyType>
Я что-то упускаю? Спасибо вам!
Комментарии:
1. какова сигнатура myFunc в классе прокси, сгенерированном вашим дизайнером при добавлении веб-ссылки? Я не думаю, что вы можете обрабатывать ArrayList как массив строк… вам необходимо подтвердить сигнатуру метода в классе прокси..
2. это string[] myFunc(строка arg1, строка arg2)
3. вы проверяли длину массива после вызова веб-метода? возвращает ли это что-нибудь?
4. его длина = 0. Когда я меняю сигнатуру веб-метода на return string[], он работает нормально. Таким образом, проблема может заключаться в приведении ArrayList к string[] в веб-службе.
5. поскольку это сложный тип, вам необходимо его сериализовать…
Ответ №1:
Вы пробовали —
List<string> ret = ws.myFunc("arg1", "arg2");
Поскольку возврат из веб-сервиса может быть в форме ArrayOfString
.