如何将NSURLconnection http响应数据与iphone中的字符串值进行比较?

0 string iphone comparison http nsurlconnection

我是iphone编程的新手......我想做一个激活模块,它会发送一个带有PIN号的http请求然后读取响应......如果响应是"OK",它会打开一个主菜单...........问题是我收到的响应为"OK",但我无法将其与NSString进行比较@"OK"........... .so如何比较http响应与字符串...........请给你的建议...谢谢.

这是我的一段代码......

- (IBAction)submitPINAction:(id)sender {printf("inside submit btn"); mydata = [NSMutableData alloc]; NSURLRequest*request = [NSURLRequest requestWithURL:[NSURL URLWithString:@" http://192.168.100.3/WWTF/activationApp.php?PIN=11111 "]

                                          cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
NSURLConnection *connection=[[NSURLConnection alloc] initWithRequest:request delegate:self];
if(connection)
{
    mydata = [[NSMutableData data] retain];
}
else
{
    //Handle error : Not received data
    printf("No internet connection");
}
Run Code Online (Sandbox Code Playgroud)

}

- (void)connection:(NSURLConnection*)theConnection didReceiveData:(NSData*)incrementalData {printf("data received"); if(mydata == nil){mydata = [[NSMutableData alloc] initWithCapacity:2048]; } [mydata appendData:incrementalData]; NSString*temp = [[NSString alloc] initWithData:mydata encoding:NSASCIIStringEncoding];

NSString *string1 = @"OK";


NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

if([string1 isEqualToString:temp]){   // HERE IS THE PROBLEM, THE STRINGS ARE NOT GETTIN COMPARED

    [prefs setBool:TRUE  forKey: @"activationKey"];
    // show the main menu
    mainMenuController *mmC = [[mainMenuController alloc]initWithNibName:@"mainMenu" bundle:[NSBundle mainBundle]];
    self.mmainMenuController = mmC;
    [mmC release];
    [self.view addSubview:[mmainMenuController view]];
}
else{
    printf("in else");
    [prefs setBool:FALSE  forKey: @"activationKey"];
    //show an alert
    UIAlertView *alertActivationFail = [[UIAlertView alloc] initWithTitle:@"Activation Failed!" message:@"PIN is Incorrect" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alertActivationFail show];
    [alertActivationFail release];
}
Run Code Online (Sandbox Code Playgroud)

}


Pan*_*ros 5

我会使用以下行,以查看响应实际上是OK字符串,因为它可能包含空格或其他字符.

NSLog(@"string1 = '%@' temp = '%@'", string1, temp);
Run Code Online (Sandbox Code Playgroud)

将这一行放在if语句之前,就像这样......

NSString *string1 = @"OK";
NSLog(@"string1 = '%@' temp = '%@'", string1, temp);
if([string1 isEqualToString:temp]){   // HERE IS THE PROBLEM, THE STRINGS ARE NOT GETTIN COMPARED
Run Code Online (Sandbox Code Playgroud)

如果额外的空格是比较失败的原因,那么可以使用以下方法从字符串中修剪空格:

+(NSString *)trim:(NSString *)value {
    return [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
} 
Run Code Online (Sandbox Code Playgroud)