当设置为NSMutableURLRequest的HTTP头时,NSString表现得很奇怪

时间:2013-02-24 20:05:26

标签: iphone objective-c nsstring nsmutableurlrequest

我正在整理一个包含某些内容的字符串,该字符串被设置为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\""; }

为什么?

2 个答案:

答案 0 :(得分:3)

这就是NSDictionary mURLRequest.allHTTPHeaderFields打印自己的方式。每当NSDictionaries打印其内容时,它们会双引号包含空格的任何字符串。除了其他方面,它们还会转义字符串中的任何双引号。

字符串尚未更改。您可以通过执行

来验证这一点
NSLog(@"authHeader: %@", [mURLRequest.allHTTPHeaderFields objectForKey: @"Authorization"]);

答案 1 :(得分:0)

它被转换......然后它被转换回显示。

您的标题应该没问题,只是它显示为用于记录的字符串。