【发布时间】:2012-06-27 09:57:39
【问题描述】:
我在正确设置请求的 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 realm="", oauth_consumer_key="key", oauth_signature_method="HMAC-SHA1", oauth_signature="HT2UwJoW4dSNh1gXkAzQThLp0Sk%3D", oauth_timestamp="1340789377", oauth_nonce="3BDF0A1A-4FB0-40EF-95EA-" , oauth_version="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_versionFD0781" ="1.0""
}
【问题讨论】:
-
这是服务器从 Windows 客户端接收的内容:
array(7) { ["app_status"]=> string(67) "{"downloads":[],"application": {"status":"Idle","transfer_speed":0}}" ["oauth_consumer_key"]=> string(40) "1e98d7a0b09c4a155b78cdb5ca09bee309355bb7" ["oauth_nonce"]=> string(8) "91942949" ["oauth_signature_method"] => 字符串(9)“HMAC-SHA1”[“oauth_timestamp”]=> 字符串(10)“1340717947”[“oauth_version”]=> 字符串(3)“1.0”[“oauth_signature”]=> 字符串(28) "Q1Ac4eF690stWrvaOCi0knxThjY="}
标签: objective-c nsmutableurlrequest