リクエストのHTTPBodyを正しく設定することに問題があります。私はAPIサーバーと通信するためにOauthを使用していますが、唯一の違いは、ヘッダーではなく本文を介してデータを送信する必要があることです(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-4FB 「1.0」
そして、これはサーバーが読み取るものです、なぜ配列が間違っているのですか?これはサーバー側のバグではありません。C#クライアントは問題なく実行します。
array(1){ ["OAuth_realm"] => string(215) "" "、oauth_consumer_key =" key "、oauth_signature_method =" HMAC-SHA1"、oauth_signature =" HT2UwJoW4dSNh1gXkAzQThLp0Sk = "、oauth_timestamp =" 1340789377 "、oauth_nonce =" 3BDF0A1A-4FB0-40EF = "1.0" " }