2013-02-12 2 views
0

내 iPhone 응용 프로그램에서 보낸 HTTP 요청을 확인하는 PHP로 작성된 웹 서비스를 사용하고 있습니다. PHP 스크립트는 자격 증명이 맞는지 여부에 따라 예 또는 아니오를 반환합니다. 하드 코딩,하지만 그들은 예상대로 작동하지 않는 것처럼 보입니다. PHP 스크립트가 예를 반환하고 조건부가 실패하더라도 하드 코딩 된 문자열로 결과를 변경하려고 시도했지만이 작업은 ...목표 -C 휴식 응답

여기에 있습니다.

는 PHP로 작성된
NSString *varyingString1 = @"username="; 
    NSString *varyingString2 = @"username"; 


    NSString *varyingString3 = @"&password="; 
    NSString *varyingString4 = @"password"; 
    NSString *post = [NSString stringWithFormat: @"%@%@%@%@", varyingString1, varyingString2, varyingString3, varyingString4]; 

    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
    [request setURL:[NSURL URLWithString:@"http://url.com/api/login.php"]]; 
    [request setHTTPMethod:@"POST"]; 
    [request setHTTPBody:postData]; 
    NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil]; 
    NSString *strResult = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 

    NSString *result = strResult; 
    result = [post stringByReplacingOccurrencesOfString:@" " withString:@""]; 

    if(result == @"yes"){ 
     NSLog(@"%@",strResult); 
     [self performSegueWithIdentifier:@"picker" sender:self]; 
    }else{ 
     NSLog(@"No"); 
    } 

내 웹 서비스는 다음이

과 같은 코드입니다
<?php if($_POST['password'] == 'password' && $_POST['username'] == 'username') echo "yes"; 
else echo "no"; 

어떤 아이디어? 나머지

+0

코드를 실행 한 후 "결과"의 값이 무엇을 사용하여 비교하려면? –

+0

디버거를 사용하여 결과에 저장된 값을 검사하십시오. 변수 내에서 인식하지 못하는 다른 공백 문자가있을 수 있습니다. – Jeremy

답변

0

result == @"yes" 두 문자열을 비교하지 않습니다.

은 문자열 [result isEqualToString:@"yes"]

-2

는 사용자가 수익 200 OK 로그인 한 경우 자격 증명이 복귀를 실패 할 경우,

exampel에 대한 HTTP 응답 코드 을 통해 응답을 처리하기 위해 선호하는 자사의 서비스 401 권한 당신은 응답 본문을 얻고 처리 할 수

<?php 
    if($_POST['password'] == 'password' && $_POST['username'] == 'username') 
    { 
    header('HTTP/1.0 200 OK'); 
    } else { 
    header('HTTP/1.0 401 Unauthorized'); 
    } 
+0

이것은 응답 헤더 일 뿐이며 응답 본문에서 필요한 메시지를 반환 할 수 있습니다. 나머지 API는 완료된 상태가 아닙니다. – NLF