我在正确设置请求的 HTTPBody 时遇到问题。我正在使用 Oauth 与我们的 API 服务器进行通信,唯一的区别是,我需要通过正文而不是标头发送数据(使用 OauthConsumer.framework - http://code.google.com/p/oauthconsumer/ wiki/UsingOAuthConsumer)。
这是我的代码:
NSString *oauthHeader = [NSString stringWithFormat:@"OAuth realm=\"%@\", oauth_consumer_key=\"%@\", %@oauth_signature_method=\"%@\", oauth_signature=\"%@\", oauth_timestamp=\"%@\", oauth_nonce=\"%@\", oauth_version=\"1.0\"%@",
[realm URLEncodedString],
[consumer.key URLEncodedString],
oauthToken,
[[signatureProvider name] URLEncodedString],
[signature URLEncodedString],
timestamp,
nonce,
extraParameters];
//[self setValue:oauthHeader forHTTPHeaderField:@"Authorization"];
NSLog(@"%@", oauthHeader);
[self setHTTPBody:[oauthHeader dataUsingEncoding:NSASCIIStringEncoding]];
这是 NSlog 的输出。
OAuth 领域="",oauth_consumer_key="key",oauth_signature_method="HMAC-SHA1",oauth_signature="HT2UwJoW4dSNh1gXkAzQThLp0Sk%3D",oauth_timestamp="1340789377",oauth_nonce="3BDF0A1A-4FB0-40EF-95EA-5CBB88" “1.0”
这就是服务器读取的内容,为什么数组是错误的?这不是服务器端的错误,我们的 C# 客户端没有任何问题。
数组(1){ [“OAuth_realm”]=> 字符串(215) """, oauth_consumer_key="key", oauth_signature_method="HMAC-SHA1", oauth_signature="HT2UwJoW4dSNh1gXkAzQThLp0Sk=", oauth_timestamp="1340789377", oauth_nonce="3BDF0A1A-4FB0-40EF-95EA-5CBauth_versionFD071" ="1.0"" }