1

NSMutableURLRequest の HTTP ヘッダー フィールドとして設定されている、特定のコンテンツを含む文字列をまとめています。

NSString *authenticationHeaderString = [NSString stringWithFormat:@"OAuth oauth_callback=\"%@\", oauth_nonce=\"%@\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"%@\", oauth_consumer_key=\"xxxxxxxxx\", oauth_signature=\"%@\", oauth_version=\"1.0\"", [callbackURLString URLEncodedString], nonce, timestampString, [BYOAuthSignatureString signatureStringWithParameters:signingParams URL:[mURLRequest.URL absoluteString] HTTPMethod:mURLRequest.HTTPMethod]];
NSLog(@"authenticationHeaderString: %@", authenticationHeaderString);
[mURLRequest setValue:[NSString stringWithFormat:@"%@", authenticationHeaderString] forHTTPHeaderField:@"Authorization"];
NSLog(@"header:%@", mURLRequest.allHTTPHeaderFields);

ヘッダー フィールドで\"は、に変換されません。"

authenticationHeaderString: OAuth oauth_callback="http%3A%2F%2Fbytolution.com", oauth_nonce="o7QNfKOMBKtdZQmJrbV9QWqVwUkkRK1ABbjfK4hWTQ", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1361735323", oauth_consumer_key="xxxxxxxxxxx", oauth_signature="koNYscKJx3WwC7M4kHsrMpfzYoo=", oauth_version="1.0"

header:{ Authorization = "OAuth oauth_callback=\"http%3A%2F%2Fbytolution.com\", oauth_nonce=\"o7QNfKOMBKtdZQmJrbV9QWqVwUkkRK1ABbjfK4hWTQ\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1361735323\", oauth_consumer_key=\"xxxxxxxxxxxx\", oauth_signature=\"koNYscKJx3WwC7M4kHsrMpfzYoo=\", oauth_version=\"1.0\""; }

何故ですか?

4

2 に答える 2

3

これは、NSDictionarymURLRequest.allHTTPHeaderFieldsが自分自身を印刷する方法です。NSDictionaries がコンテンツを出力するときはいつでも、スペースを含む文字列を二重引用符で囲みます。また、文字列内の二重引用符などもエスケープします。

文字列は変更されていません。これを確認するには、

NSLog(@"authHeader: %@", [mURLRequest.allHTTPHeaderFields objectForKey: @"Authorization"]);
于 2013-02-24T20:16:48.910 に答える
0

変換されます...しかし、表示用に変換されます。

ヘッダーは問題ないはずです。ログ用の文字列として表示されるだけです。

于 2013-02-24T20:09:42.200 に答える