NSURLSession:获取401 HTTP错误

时间:2016-05-15 19:43:52

标签: objective-c nsurlconnection token nsurlsession http-status-code-401

我正在" 401未经授权访问端点"。当我在POSTMAN(Chrome扩展程序)上运行相同的调用时,它工作正常。即使它在我的Android应用程序中运行良好。

但是在这里,即使我在标头中发送令牌,我也会收到未经授权的访问。我不知道这里出了什么问题。我得到的回应是:

  

{"详细信息":"未提供身份验证凭据。"}

这是我的代码:

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
NSString *url=[NSString stringWithFormat:@"%@",endpoint];
NSLog(@"url is %@",url);
[request setURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"GET"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSString *token=[NSString stringWithFormat:@"token %@",TOKEN];
NSLog(@"token is %@",token);
[request addValue:token forHTTPHeaderField:@"Authorization"];
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
[[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
    NSString *requestReply = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    NSLog(@"requestReply: %@", requestReply);
}] resume];

我做错了什么,在哪里?

编辑:如果我通过使用不同的类尝试这种方式,则响应为(null)。

NSMutableURLRequest *request =
[NSMutableURLRequest requestWithURL:[NSURL
                                     URLWithString:url]
                        cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData
                    timeoutInterval:10
 ];
[request setHTTPMethod: @"GET"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSString *token=[NSString stringWithFormat:@"token %@",[[NSUserDefaults standardUserDefaults]valueForKey:D_KEY_TOKEN]];
[request setValue:token forHTTPHeaderField:@"Authorization"];
NSError *requestError = nil;
NSURLResponse *urlResponse = nil;
[NSURLConnection sendSynchronousRequest:request
                      returningResponse:&urlResponse error:&requestError];
NSLog(@"url response is %@",urlResponse);

EDIT2:

NSString *url=[NSString stringWithFormat:@"%@/",endpoint];

这就是我所做的只是在它开始工作时在端点末尾附加斜杠(/)。我想知道为什么有必要在最后附加斜线?我所有的其他电话都没有斜线。

1 个答案:

答案 0 :(得分:2)

尝试在网址的末尾添加斜杠“/”。