0

我得到“401未经授权访问端点”。当我在POSTMAN(Chrome扩展)上运行相同的调用时,它工作正常。即使它在我的Android应用程序中工作正常。NSURLSession:获取401 HTTP错误

但是,在这里,即使我在标头中发送令牌,我也会受到未经授权的访问。我不知道这里出了什么问题。我得到的回应是:{: “不提供身份验证凭据。” “细节”}

这里是我的代码:

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]; 

什么,我在哪里做错了什么?

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

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

“AUTHORIZATION”标题的值是否应在实际标记值前面加上文本“标记”? – rmaddy

+0

是的,它应该。这就是我们将授权发送到服务器的方式。 – iOSDeveloper

+0

您使用auth2吗? –

回答

1

尝试在网址的末尾加上斜线“/”。