在点击https URL时获得空响应

时间:2016-06-14 05:18:52

标签: ios objective-c json nsurlconnection

在目标C中点击https网址时遇到了一些问题。这是我的代码。

- (void)viewDidLoad {

   NSString *urlString = [NSString stringWithFormat:@"MY URL",uid];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:
                                    [NSURL URLWithString:urlString]];
    [request setHTTPShouldHandleCookies:YES];
    [request setHTTPMethod:@"GET"];
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    [connection start];

}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

    NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
    NSUInteger responseStatusCode = [httpResponse statusCode];
    _responseData = [[NSMutableData alloc] init];
    [self.responseData setLength:0];

    NSLog(@"connection");
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    // Append the new data to the instance variable you declared
    [_responseData appendData:data];
    NSLog(@"_responseData%@",_responseData);

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSError *jError;
   NSArray *myApps= [NSJSONSerialization JSONObjectWithData:_responseData options:NSJSONReadingAllowFragments error:&jError];
    NSLog(@"jError:%@",jError);
}

当我在模拟器中运行应用程序时,有时会获得 myApps 值。 但是大部分时间都没有得到回复。那时我能够看到 _responseData myApps 的值为空。像这样获取响应数据

  

_responseData< 3c21444f 43545950 45206874 6d6c3e0a 3c212d2d 20242052 65766973 696f6e3a 20322e31 34303431 36202420 2d2d3e0a 3c212d2d   5b696620 49454d6f>

像this.myApps这样的错误是空的

  

jError:Error Domain = NSCocoaErrorDomain Code = 3840“无效的值   字符0.“UserInfo = {NSDebugDescription =周围的值无效   字符0。}

当我收到此错误时,我尝试在浏览器中点击URL,在浏览器中获取响应。 所以我再次清理并运行应用程序,仍然面临同样的问题。 但是,如果更改模拟器,例如我在iPhone 6s中运行并且遇到上述错误,现在更改为iPhone 6而不是获得响应。

任何人都可以帮助我。

2 个答案:

答案 0 :(得分:0)

当您尝试以不正确的方式处理Cookie时会发生这种情况。从代码中删除以下行并检查。

[request setHTTPShouldHandleCookies:YES];

答案 1 :(得分:0)

有时,撇号('),空格或某些特殊字符可能会导致NSMutableURLRequest返回“null”URL。 在将字符串url传递给NSMutableURLRequest之前对其进行编码(转义百分比编码),如下所示:

NSString *updatedPhotoUrl     = originalUrlString ;

updatedPhotoUrl               = [updatedPhotoUrl stringByAddingPercentEscapesUsingEncoding : NSUTF8StringEncoding];

NSMutableURLRequest *request  = [NSMutableURLRequest requestWithURL:[NSURL URLWithString: updatedPhotoUrl]];