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

嘗試在網址的末尾加上斜線「/」。