0

Ich bekomme "401 nicht autorisierten Zugriff auf den Endpunkt". Wenn ich den gleichen Anruf auf POSTMAN (Chrome Extension) führe, funktioniert es gut. Sogar es funktioniert gut in meiner Android App.NSURLSession: Getting 401 HTTP Fehler

Aber hier bekomme ich den unberechtigten Zugriff, auch wenn ich Token in Headern sende. Ich habe keine Ahnung, was hier falsch läuft. Die Antwort, die ich bin immer ist:

{ "Detail": "Authentifizierungsinformationen nicht zur Verfügung gestellt wurden."}

Hier ist mein Code:

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

Was und wo bin ich etwas falsch machen?

Edit: Wenn ich diesen Weg mit einer anderen Klasse versucht, ist die Antwort (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]; 

Das ist, was ich soeben fügen Sie den Schrägstrich getan (/) am Ende des Endpunkts es anfängt zu arbeiten. Ich möchte wissen, warum am Ende ein Schrägstrich angehängt werden muss? Alle meine anderen Anrufe funktionieren ohne Schrägstrich.

+1

Sollte der Wert für den Header "AUTHORIZATION" den Text "token" dem tatsächlichen Token-Wert vorangestellt haben? – rmaddy

+0

ja sollte es. So senden wir die Autorisierung an den Server. – iOSDeveloper

+0

Sie verwenden auth2? –

Antwort

1

Versuchen Sie, einen Schrägstrich "/" am Ende der URL einzufügen.