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];
私は何を、どこです何か間違っている?
編集:異なるクラスを使用してこの方法を試した場合、応答は(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];
これは私が働いて起動することで、エンドポイントの最後にスラッシュ(/)を追加しやっていることです。最後にスラッシュを付ける必要があるのはなぜですか?私の他のすべてのコールはスラッシュなしで動作しています。
"AUTHORIZATION"ヘッダーの値に実際のトークン値の先頭に 'token 'という文字列を付ける必要がありますか? – rmaddy
はいそうです。これがサーバーへの認証の送信方法です。 – iOSDeveloper
あなたはauth2を使用していますか? –