2013-07-24 57 views
2

我有一个工作的http GET没有使用任何第三方位,我是iOS新手,所以这是一个艰难的初始设置。我的代码如下所示:使用sendSynchronousRequest获取http响应代码在ios中使用sendSynchronousRequest

-(NSString *) SendGetRequestToRest:(NSString *)urlEndString 
{ 

NSString *userName = @"userN"; 
NSString *password = @"PassW"; 

NSString *urlBaseString = @"http://someurl.co.uk/"; 

NSString *urlString = [NSString stringWithFormat:@"%@%@", urlBaseString, urlEndString]; 

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 

[request setURL:[NSURL URLWithString:urlString]]; 

[request setHTTPMethod:@"GET"]; 

NSString *str1 = [NSString stringWithFormat:@"%@:%@", userName, password]; 
NSString *encodedString = [self stringByBase64EncodingWithString:str1]; 
[request addValue:[NSString stringWithFormat:@"Basic %@",encodedString] forHTTPHeaderField:@"Authorization"]; 

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 

NSString *str = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 
NSLog(@"str: %@", str); 

return str; 

} 

我需要做的就是轨道时HTTP GET的状态代码是不是一个很好的200,我看到How to check status of web server in iOS?这看起来很有希望,即补充一点:

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSHTTPURLResponse *)response 
{ 
    if ([response statusCode] == 404) 
    { 
    /// do some stuff 
    } 
} 

但我不能看到如何将这些连接多达

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 

因为它不接受委托?

回答

11

可以使用returningResponse参数得到 “响应”:

NSHTTPURLResponse *response = nil; 
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; 
if ([response statusCode] == 404) 
{ 
    // Do whatever you want to do after getting response 
} 
相关问题