【发布时间】:2014-06-05 22:10:31
【问题描述】:
我的应用程序中有一个方法向服务器发送请求以检查用户当前是否已登录。此 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方法sn-p:
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;
}
【问题讨论】:
-
如果您在发出请求时将
returnformat=json添加到 URL,它将以 JSON 格式返回 - 这更容易解析。
标签: ios objective-c coldfusion boolean nsurlrequest