2013-06-21 3 views
2

나는 아이폰 OS/엑스 코드 개발에 대해 잘 알고 있어요에 아이폰 OS 응용 프로그램에서 JSON 문자열을 전달하고 지금은 내 자신의 웹 서비스를 개발하려고합니다. 불행하게도 나는 PHP 페이지에 내 아이폰 OS 응용 프로그램에서 JSON 문자열을 전달하는 가장 좋은 방법과 사투를 벌인거야. 나는 PHP를 디버깅하는 넷빈즈를 사용하기 위해 노력하고있어PHP WebService를

//localhost/index.php?method=createRestaurant&json={"email" : "", "name" : "Test Rest",} 

하지만 모두 :

{"email" : "", "name" : "Test Rest",} 

내가 다음 URL (GET)을 만드는거야 : 엑스 코드에서

나는 비슷한 JSON 문자열을 만들 넷빈즈 & 아이폰 OS 나쁜 URL 또는 잘못된 문자 오류 중 하나와 함께 실패, 내가 추측하고있어 어떤에서는 {} 실패하는 JSON 문자입니다. 내가 크롬 우체부를 사용하여 PHP 일 것을 증명 작동 같은 URL을 발행하는 경우

는/내가 그것을 필요하고.

그래서 요약의 URL에서 JSON 데이터를 포함하는 가장 좋은 방법은 JSON 인코딩되는 방식에 영향을 미치는 엑스 코드에서 변경해야하는 것이 무엇입니까?

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:myDictionary options:NSJSONWritingPrettyPrinted error:&error]; 
    jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 

저는 Java를 사용해야하지만 속도, 환경 비용 등으로 인해 PHP를 사용하여 시스템을 작동시키고 있습니다. 솔루션이 완료되면 솔루션을 Java로 이식 할 것입니다.

도움 주셔서 감사합니다.

답변

0

나는 POST 메소드를 사용하고 간단하게 디버깅을위한 당신의 PHP 스크립트에 그것을 밖으로 인쇄 것이다.

디버그 출력은 다음과 같이 될 것이다 :

$ JSON = json_decode ($ _ POST [ 'JSON']); print_r ($ json);

0

할 수 있습니다 중 하나를 다음과 같이 URL을 변경하여 GET 요청에 의해 과거 데이터 :

//localhost/index.php?method=createRestaurant&email=emailData&name=TestData 

또는 당신이 POST 변수에 POST 요청에 의해 데이터를 보낼 수 있습니다.

1

생각을 몇 :

  1. 귀하의 JSON이 유효하지 않습니다. 거기에 여분의 쉼표가 있습니다. JSON Lint으로 확인하십시오.

  2. 공백과 같은 문자는 URL에서 허용되지 않기 때문에 URL 매개 변수를 퍼센트 이스케이프 처리해야합니다. stringByAddingPercentEscapesUsingEncoding을 사용할 수 있습니다. 또는 문자열에 개별 URL 매개 변수 내에서 사용할 수없는 다른 유효한 URL 문자가있는 경우 더 많은 제어를 제공하는 Core Foundation CFURLCreateStringByAddingPercentEscapes을 사용할 수 있습니다.

    @implementation NSString (UrlEncode) 
    
    + (NSString *)stringByAddingPercentEscapesFor:(NSString *)string 
           legalURLCharactersToBeEscaped:(NSString *)legalURLCharactersToBeEscaped 
               usingEncoding:(NSStringEncoding)encoding 
    { 
        return CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
                        (CFStringRef)string, 
                        NULL, 
                        (CFStringRef)legalURLCharactersToBeEscaped, 
                        CFStringConvertNSStringEncodingToEncoding(encoding) 
                        )); 
    } 
    
    - (NSString *)stringByAddingPercentEscapesFor:(NSString *)legalURLCharactersToBeEscaped 
               usingEncoding:(NSStringEncoding)encoding 
    { 
        return [NSString stringByAddingPercentEscapesFor:self 
             legalURLCharactersToBeEscaped:legalURLCharactersToBeEscaped 
                 usingEncoding:encoding]; 
    } 
    
    - (NSString *)stringByAddingPercentEscapesForURLParameterUsingEncoding:(NSStringEncoding)encoding 
    { 
        return [NSString stringByAddingPercentEscapesFor:self 
             legalURLCharactersToBeEscaped:@";/?:@&=+$," 
                 usingEncoding:encoding]; 
    } 
    
    @end 
    

    그래서, 당신은 당신의 URL에 추가하기 전에 JSON 문자열에 stringByAddingPercentEscapesForURLParameterUsingEncoding을 사용할 수 있습니다 :이 CoreFoundation에서 함수에 간단한 인터페이스를 제공하는있는 NSString 범주를 사용합니다. 또는 직접 CFURLCreateStringByAddingPercentEscapes라고 전화 할 수 있습니다.

0

제안 해 주셔서 감사합니다. 이제 GET에서 POST로 변경되었습니다. 모두 잘 작동하고 있습니다.

관련 문제