使用sendSynchronousRequest时,在ios中获取http响应代码

Ada*_*hts 2 iphone ios

我有一个工作的http GET,没有使用任何第三方位,我是iOS的新手,所以这是最初设置的困难.我的代码看起来像:

-(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;

}
Run Code Online (Sandbox Code Playgroud)

我需要做的是跟踪http GET的状态代码是不是很好200,我看到如何检查iOS中的Web服务器的状态?这看起来很有希望,即添加:

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

但我不知道如何将其连接起来

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
Run Code Online (Sandbox Code Playgroud)

因为它不接受代表?

Vla*_*mir 12

您可以使用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
}
Run Code Online (Sandbox Code Playgroud)