iOS json:使用令牌发出请求

时间:2014-02-16 14:19:19

标签: objective-c json authentication token

我有一个关于使用令牌进行json身份验证的问题。我有一个带数据库的服务器。当我想POST或PUT到数据库时,我需要有一个带有请求的令牌,这对每个用户都是唯一的。我已经尝试了这个与休息客户端,它工作正常。我将附上其余客户的打印屏幕。但是,当我想从应用程序中执行此操作时,我会收到“拒绝访问”的响应。我究竟做错了什么?

这是我的Objective-c代码:

NSString *jsonRequest = [NSString stringWithFormat:@"{\"name\":\"%@\",\"skills\":\"%@\",\"description\":\"%@\",\"expectation\":\"%@\",\"mail\":\"%@\"}",profileName.text,profileSkills.text,profileDescription.text,profileExpectations.text,profileMail.text];

NSString *testToken = @"6ecf0fe735487bcaab74c0fcd3ed57dc";    
NSURL *url = [NSURL URLWithString:@"https://31.208.72.233:3000/persons/63"];    
NSData *JSONBody = [jsonRequest dataUsingEncoding:NSUTF8StringEncoding];
NSString *headerValue = [NSString stringWithFormat:@"Authorization: Token %@" , testToken];
NSMutableURLRequest *loginRequest = [[NSMutableURLRequest alloc] initWithURL:url];
loginRequest.HTTPMethod = @"PUT";
loginRequest.HTTPBody = JSONBody;
[loginRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[loginRequest addValue:headerValue forHTTPHeaderField:@"Authorization"];
NSURLResponse *response = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:loginRequest returningResponse:&response error:nil];
NSString *txt = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

enter image description here

1 个答案:

答案 0 :(得分:2)

在标题中,您有键值对。 Authorization是关键部分,:之后的所有内容都是值。

看起来您实际发送的内容是Authorization: Authorization: Token 6ecf0fe735487bcaab74c0fcd3ed57dc。您应该从Authorization

中删除headerValue