Клиент OData для Obj-C и анализ скалярных возвращаемых значений

Кажется, я не могу найти способ для клиента OData Objective-C вернуть значение функции веб-службы, которая просто возвращает что-то простое, например целое число.

Например,

[WebInvoke]
public Int32 xyx()
{
return ( 3 );
}

Клиентский код, сгенерированный прокси-сервером, генерирует функцию, которая при вызове возвращает NSString в формате XML со значением 3. Мне придется разобрать это значение, а затем сопоставить его с целым числом? Я думал, что это будет проще. Еще сложнее для булов. Чистые логические значения истинны/ложны, когда Obj-C - ДА/НЕТ. Вам нужно будет написать код, который анализирует XML, находит истину/ложь, если это ДА/НЕТ, arrgggg.

Я думал, что клиент OData сопоставит их, я ошибаюсь?


person Chris Bluethman    schedule 13.04.2011    source источник


Ответы (1)


Просто интересно, есть ли у кого-нибудь ответ на этот вопрос. Я в той же лодке. В моей ситуации я использую прокси-сервер .Net на стороне клиента (Добавить ссылку на службу), в этой ситуации он очень похож. В итоге мне приходится вызывать свой сервисный метод, используя:

context.Execute<int32>(new Uri(MyUri, UriKind.Relative)).ToList();

Это возвращает мне ICollection с 1 элементом. Это работает, но это, конечно, не очень чисто! Надеюсь, у кого-то есть лучшее решение.

Меня также интересует правильный способ доступа к «данным публикации» из метода службы. Я еще не пробовал, но, основываясь на других вещах, которые я сделал, я думаю примерно так:

HttpRequest ThisRequest = (HttpRequest)System.Web.HttpContext.Current.Request;
string PostData = ThisRequest.Form["PostData"];

Документация OData не очень понятна в этом отношении. Спасибо!!

person BrainMan    schedule 20.06.2011
comment
Если вы хотите избежать повторения коллекции из одного элемента, попробуйте context.Execute<int32>(new Uri(MyUri, UriKind.Relative)).First(); - person nolith; 14.05.2012