从Objective-C中的ColdFusion布尔返回类型获取BOOL的更好方法是什么?

时间:2014-04-21 19:18:49

标签: ios objective-c coldfusion boolean nsurlrequest

我的应用程序中有一个方法向服务器发送请求以检查用户当前是否已登录。此ColdFusion函数返回类型boolean。当我NSLog返回数据时,这就是我得到的:

<wddxPacket version='1.0'><header/><data><boolean value='true'/></data></wddxPacket>

目前,要确定它是返回true还是false,我在该返回的字符串中搜索子字符串'true'。这似乎不是一个好的解决方案。我的问题是,有没有更好的方法从这个函数获得Objective-C BOOL?如果最好更改ColdFusion功能,我很幸运能做到这一点。谢谢!

ColdFusion功能:

<cffunction name="loggedIn" returnType="Boolean" output="false" access="remote">
    <cfargument name="sessionID" type="UUID" required="true">
    <cfquery name="q_session" datasource="#request.db_dsn#">
        SELECT ...
    </cfquery>
    <cfreturn q_session.recordCount gte 1>
</cffunction>

Objective-C方法片段:

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:myURLVar];
    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setHTTPBody:postData];

    NSError *requestError = [[NSError alloc] init];
    NSHTTPURLResponse *response = nil;
    NSData *urlData = [NSURLConnection sendSynchronousRequest:request
                                            returningResponse:&response
                                                        error:&requestError];

    NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
    NSLog(@"%@", responseData);
    if ([responseData rangeOfString:@"true" options:NSCaseInsensitiveSearch].location != NSNotFound){
        sessionIsActive = YES;
    }

1 个答案:

答案 0 :(得分:1)

我认为您可以将returnFormat="plain"添加到cffunction

  
    

plain:确保返回值是ColdFusion可以直接转换为字符串的类型,并返回字符串值而不进行序列化。有效类型包括所有简单类型,例如数字和XML对象。如果返回值是复杂类型(如数组)或二进制值,则ColdFusion会生成错误。如果指定returntype属性,则其值必须为any,boolean,date,guid,numeric,string,uuid,variablename或XML;否则,ColdFusion会生成错误。

  
     

默认情况下,ColdFusion将除XML之外的所有返回类型(包括简单返回类型)序列化为WDDX格式,并将XML数据作为XML文本返回。

应该只给你一个字符串,这个字符串更容易解析。

[source]