【问题标题】:iOS json: put request with tokeniOS json:使用令牌提出请求
【发布时间】:2014-02-16 14:19:18
【问题描述】:

我有一个关于使用令牌的 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];

【问题讨论】:

  • 在标题中有键值对。 Authorization 是键,后面的都是值。看起来您实际上可能发送的是Authorization: Authorization: Token 6ecf0fe735487bcaab74c0fcd3ed57dc。你能尝试从headerValue中删除Authorization
  • 这对我有帮助,现在我得到了回复:2014-02-16 16:40:51.248 "AppName"[1743:3307] CFNetwork SSLHandshake failed (-9800) 2014-02-16 16 :40:51.265 "AppName"[1743:3307] CFNetwork SSLHandshake 失败 (-9800) 2014-02-16 16:40:51.290 "AppName"[1743:3307] CFNetwork SSLHandshake 失败 (-9800) 2014-02-16 16 :40:51.290 "AppName"[1743:3307] NSURLConnection/CFURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9800)
  • 你的客户是否给你完整的原始请求 - 你能发布这个
  • 实际的 HTTP 请求,所以我们可以看到有什么区别 - 如果客户端工作但您的代码没有,则必须有区别

标签: objective-c json authentication token


【解决方案1】:

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

看起来您实际发送的是Authorization: Authorization: Token 6ecf0fe735487bcaab74c0fcd3ed57dc。您应该从 headerValue 中删除 Authorization

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2018-08-22
    • 2021-12-03
    • 2013-09-18
    • 2023-03-20
    • 2017-04-17
    • 2016-06-11
    相关资源
    最近更新 更多