2013-03-12 47 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协议。