2013-03-12 27 views
7

Obecnie używam Facebooka do logowania się do mojej aplikacji na iOS, a administrator serwera ostatnio dodał uwierzytelnianie zabezpieczeń, wymagając tokena dostępu do Facebooka wraz z nawiązywaniem wszystkich połączeń za pośrednictwem protokołu HTTPS. Oto kod, który próbowałem uruchomić, ale otrzymuję błąd odpowiedzi serwera wynoszący 500 (wewnętrzny błąd serwera) bez względu na to, co robię. Jakieś pomysły?Wysyłanie żądania HTTP POST w systemie iOS z JSON

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 błędów zazwyczaj oznacza, że ​​problem leży po stronie serwera, a nie klienta. http://pcsupport.about.com/od/findbyerrormessage/a/500servererror.htm –

+0

Nie za dużo tutaj. Co zawiera treść odpowiedzi? –

+0

@MikeD To działało dobrze zanim dodali oni bezpieczeństwo na Facebooku i zarówno osoby pracujące w sieci, jak i wersje Androida aplikacji mogły komunikować się z serwerem. –

Odpowiedz

3

Oto sposób rejestrowania treści odpowiedzi.

@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

Należy również dostosować się do protokołu NSURLConnectionDelagate.

Powiązane problemy