私はSOとGoogleを調べましたが、これに似た問題は見つかりませんでした。私は答えが顔で私を見つめているように感じ、私は別の目を必要とします。AFFormURLParameterEncodingを使用しているときに、AFHttpClientが辞書のトークンを無効にしました
AFNetworkingを使用してStripe.com APIに接続しています。具体的には、AFHTTPClient postPathを使用してエンドポイントにデータを送信します。 Stripeではリクエストをapplication/x-www-form-urlencodedとしてエンコードする必要があるため、JSONエンコーディングを使用することはできません。
私が問題としているのは、私がChargeオブジェクトとCardオブジェクトを持っていることです。カードはチャージの財産であり、私はNSDictionaryの者にチャージし、カードの両方を変換した後などのようなリクエストに応じてそれらをパラメータとして渡す(カードチャージ辞書の内部辞書がある):
NSDictionary *parameters = [ChargeRequest convertToDictionary:request];
[[StripeAPIClient sharedClient] postPath:@"charges" parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSLog(@"Response: %@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", [error localizedDescription]);
NSLog(@"Response: %@", operation.responseString);
}];
を私が行うとこれは、AFFormURLParameterEncodingに設定AFHttpClientのparameterEncodingプロパティで、ストライプは、このエラーを返します。エラーで
"error": {
"message": "Invalid token id: {\n \"exp_month\" = 10;\n \"exp_year\" = 2016;\n number = 4242111111111111;\n}",
"type": "invalid_request_error"
}
値は、それを変換した後、具体的カードオブジェクトのキー/値です。
return [[NSDictionary alloc] initWithObjectsAndKeys:request.number, @"number", [NSNumber numberWithInt:10], @"exp_month", [NSNumber numberWithInt:2016], @"exp_year", nil];
このNSDictionaryの中に置かれて、無効なトークンを取り除くために何をすべきか上の任意のアドバイス:ここで私は、変換に使用するコードはありますか?私は間違ったことに焦点を当てていますか?
ありがとうございます!
にプルリクエストを送信している
の修正を書いていますありがとう。あなたが投稿した実装コードでAFQueryStringComponentFromParameterAtBaseKeyWithEncodingが不足しているようですね? –
申し訳ありませんが、私はそれに –
を追加しました。ありがとうございます!! –