【问题标题】:OData Client for Obj-C and Parsing Out Scalar Return Values用于 Obj-C 和解析标量返回值的 OData 客户端
【发布时间】:2011-08-04 09:46:19
【问题描述】:

我似乎无法找到一种方法让 Objective-C OData 客户端返回 Web 服务函数的值,该函数只返回一些简单的东西,比如整数。

例如,

[WebInvoke]
公共 Int32 xyx()
{
返回 ( 3 );
}

代理生成的客户端代码会生成一个函数,调用该函数时会返回一个 XML 格式的 NSString,其中包含值 3。我是否必须解析出这个值,然后将其映射到一个 int?我认为这会更容易。布尔值更难。当 Obj-C 为 YES/NO 时,净布尔值是 true/false。您必须编写代码来解析 XML,找到真/假,如果它是 YES/NO,arrgggg。

我以为 OData 客户端会映射这些,我错了吗?

【问题讨论】:

    标签: function odata scalar webinvoke


    【解决方案1】:

    只是想知道是否有人对此有答案。我在同一条船上。在我的情况下,我使用的是 .Net 客户端代理(添加服务引用),在这种情况下非常相似。我最终不得不使用以下方法调用我的服务方法:

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

    这给了我一个带有 1 个项目的 ICollection。它有效,但它肯定不是很干净!希望有人有更好的解决方案。

    我也对从服务方法内部访问“发布数据”的正确方法感兴趣。我还没有尝试过,但基于我做过的其他事情,我在想这样的事情:

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

    OData 文档对这些东西不是很清楚。谢谢!!

    【讨论】:

    • 如果你想避免迭代到一个元素集合尝试context.Execute&lt;int32&gt;(new Uri(MyUri, UriKind.Relative)).First();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 2015-05-28
    相关资源
    最近更新 更多