为什么-stringWithContentsOfURL:在这里为我的JSON通信返回nil?

时间:2012-01-07 07:43:15

标签: ios json

在服务器端,我有这样的代码来为我的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始终为零。为什么会发生这种情况,我该怎么做才能阻止它?

1 个答案:

答案 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;