2013-03-12 46 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 – 2013-03-12 02:37:59

+0

這裏並不是很多。響應體中有什麼? – 2013-03-12 02:38:18

+0

@MikeD他們在添加Facebook安全性之前工作正常,並且在網絡上工作的人和應用的Android版本都能夠與服務器通信。 – 2013-03-12 02:48:17

回答

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協議。