在服务器端,我有这样的代码来为我的iOS应用程序提供JSON:
$val = array("a", "b", "c","d");
return json_encode($val);
在该应用程序中,我尝试使用以下代码与服务器通信:
NSError *error = nil;
NSString *szURL =@"http://192.168.1.159/return.php";
NSURL *url = [NSURL URLWithString:szURL];
NSString *strData = [NSString stringWithContentsOfURL:url
encoding:NSUTF8StringEncoding
error:&error];
NSArray *appLists = (NSArray *)[strData JSONValue];
但是,strData
始终为零。为什么会发生这种情况,我该怎么做才能阻止它?
答案 0 :(得分:0)
我建议,除非您希望同步发生请求并阻止UI,否则使用NSURLConnection
或第三方解决方案执行异步请求。我喜欢http://three20.info中的TTURLRequest
,因为它可以很容易地指定标题,从数据中获取JSON值等。示例调用如下所示:
TTURLRequest *request = [[TTURLRequest alloc] initWithURL:@"http://192.168.1.159/return.php" delegate:self];
request.httpMethod = @"GET";
request.response = [[[TTURLJSONResponse alloc] init] autorelease];
request.cachePolicy = TTURLRequestCachePolicyNone;
[request send];
然后你的代表必须实现这些方法:
-(void)requestDidFinishLoad:(TTURLRequest *)request;
-(void)request:(TTURLRequest *)request didFailLoadWithError:(NSError *)error;