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.
Sollte der Wert für den Header "AUTHORIZATION" den Text "token" dem tatsächlichen Token-Wert vorangestellt haben? – rmaddy
ja sollte es. So senden wir die Autorisierung an den Server. – iOSDeveloper
Sie verwenden auth2? –