20

NSURLConnection を介して OAuth アクセス トークンを HTTP ヘッダーで送信しようとしていますが、API が「認証トークンを提供する必要がある」というエラーを表示し続けるため、ヘッダーを送信していないようです。

これは私が使用しているコードです:

NSURL *aUrl = [NSURL URLWithString: @"http://generericfakeapi.com/user/profile"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:aUrl
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:30.0];

[request addValue:[NSString stringWithFormat:@"OAuth %@", token] forHTTPHeaderField:@"Authorization"];

[request setHTTPMethod:@"GET"];

NSError *error = nil;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error: &error];

NSDictionary *JSONDictionary = [NSJSONSerialization JSONObjectWithData:returnData options:kNilOptions error:&error];
NSLog(@"Response : %@", JSONDictionary);

これは、API の cURL コマンドの例です。

curl 'http://generericfakeapi.com/user/profile' -H 'Authorization: OAuth YourAuthToken'

これは私が本質的に NSURLConnection を介して行っていることではありませんか?

どんな助けでも大歓迎です。

4

4 に答える 4

54

この行を変更します。

NSURL *aUrl = [NSURL URLWithString: @"http://generericfakeapi.com/user/profile"];

に:

NSURL *aUrl = [NSURL URLWithString: @"http://generericfakeapi.com/user/profile/"];

URL の末尾にスラッシュがない場合、iOS は Authorization ヘッダーをドロップするようです。この問題により、文字通り 2 日間の睡眠が犠牲になりました。

于 2014-04-15T07:34:21.797 に答える
1

私にとっては問題なく見えます。有効なトークンを与えましたか? このようなエラーをキャッチしてみてください

if (error) {
    NSLog(@"error : %@", error.description);
}

私のコードはうまくいきます:

NSURL *jsonURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://....ID=%i", cellID]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:jsonURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:120.0];
[request setValue:@"Basic ...." forHTTPHeaderField:@"Authorization"];
NSURLResponse *response;
NSError * error  = nil;
NSData *POSTReply = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

それが役に立てば幸い

于 2013-09-19T05:19:21.207 に答える