2013-03-12 2 views
7

현재 Facebook을 사용하여 iOS 앱에 로그인하고 있으며 서버 관리자는 Facebook 액세스 토큰을 요청하여 보안 인증을 추가하고 https를 통해 모든 연결을 수행합니다. 여기에 내가 실행 해본 코드가 있지만, 내가 뭘하든 서버 응답 오류 500 (내부 서버 오류)이 발생했습니다. 어떤 아이디어?iOS에서 JSON을 사용하여 HTTP POST 요청 보내기

NSMutableURLRequest *request = [NSMutableURLRequest 
           requestWithURL:[NSURL URLWithString:@"https://XXXXXXXXXXXXXXXX/users.json"]]; 

NSDictionary *requestData = [[NSDictionary alloc] initWithObjectsAndKeys: 
        userID, @"facebook_id", 
        FBAccessToken, @"fb_token", 
        userName, @"name", 
        nil]; 
NSError *error; 
NSData *postData = [NSJSONSerialization dataWithJSONObject:requestData options:0 error:&error]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPMethod:@"POST"]; 
[request setHTTPBody:postData]; 
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
+0

일반적으로 500 개의 오류는 클라이언트가 아닌 서버에 문제가 있음을 의미합니다. http://pcsupport.about.com/od/findbyerrormessage/a/500servererror.htm –

+0

여기에 대해서는별로 중요하지 않습니다. 응답 본문에는 무엇이 있습니까? –

+0

@MikeD 페이스 북 보안을 추가하기 전에 잘 작동하고 있었고 웹에서 작업하는 사람들과 앱의 안드로이드 버전 모두 서버와 통신 할 수있었습니다. –

답변

3

다음은 응답 본문을 기록하는 방법입니다.

@property (strong, nonatomic) NSMutableData *responseData; 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    self.responseData = [NSMutableData data]; 
    … 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    [self.responseData appendData:data]; 
    … 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSLog(@"response data - %@", [[NSString alloc] initWithData:self.responseData encoding:NSUTF8StringEncoding]); 
    … 
} 
1

또한 NSURLConnectionDelagate 프로토콜을 준수해야합니다.