NSURLRequest返回零

时间:2014-10-31 12:31:28

标签: ios nsdata nsurlrequest

我正在从JSON服务执行简单的数据下载。调用时,请求返回一个nil响应对象。这似乎与我多次使用的代码相同,但现在我很难过为什么请求返回nil。我已经验证生成的URL是有效的并且确实返回数据。我错过了一些明显的东西吗谢谢!

NSString *serviceEndpoint = [NSString stringWithFormat:@"http://waterservices.usgs.gov/nwis/iv/?sites=%@&period=PT%luH&format=json", guageID, hours];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:serviceEndpoint]];

NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
// response is nil at this point
NSDictionary *rvData = [NSJSONSerialization JSONObjectWithData:response options:0 error:&jsonError];

1 个答案:

答案 0 :(得分:4)

您完全忽略了从sendSynchronousRequest方法填充的NSError和NSURLResponse。

首先,添加一个检查来查询是否已填充NSError(如果NSURLResponse为nil),如果它不是nil,则应检查它以确定请求的问题。您还可以在NSURLResponse对象中设置峰值,以便观察任何属性以帮助调试问题:

NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL  URLWithString:@"http://waterservices.usgs.gov/nwis/iv/?sites=%@&period=PT%@luH&format=json", guageID, hours]];
[request setHTTPMethod:@"GET"];
[request setValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"content-type"];
NSError *err;
NSURLResponse *response;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request   returningResponse:&response error:&err];
if (responseData != nil)
{
    NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingMutableContainers error: &err];
}
else
{
   if (error != nil)
   {
       NSLog(@"Error description=%@", [err description]);
   }
}