2012-03-16 3 views
0

私は奇妙な動作に直面しています。RKClient POSTメソッドと特殊キャラクタ

NSDictionary *comment = [NSDictionary dictionaryWithObjects:[NSArray 
arrayWithObjects:@"wallcomment", [self.wall 
valueForKey:@"wallMessageId"], [self.textView text], nil] 
                 forKeys: 
[NSArray arrayWithObjects:@"a01call", @"a01wall_message_id", 
@"a01comment", nil]]; 

[self.textViewテキスト]の場合:私は以下のように値を保持する辞書である

[[RKClient sharedClient] post:[NSString stringWithFormat:@"api"] 
          params:aDict 
         delegate:self]; 

POSTメソッドを使用してサーバーにHTTP リクエストを送信するために次のコードを使用しますアクセント サーバとフランス語の単語で埋めは間違ったエンコーディングで受け取る:「テスト@検証 caractèresspéciaux」

を私は投稿でエンコードする前のTextViewのテキストを操作しないでくださいまたUTF8。

POSTヘッダーをチェックすると、コンテンツタイプにエンコードタイプがありません。次の方法で追加しようとしましたが、追加されませんでした。

- (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)header 

ドキュメントに記載されていない特別な方法やプロパティはありませんか?

私は0.9.3

+0

これは明らかかもしれませんが、* postValue:forHTTPHeaderField:*を呼び出す前に* post *を呼び出す必要があります。これを正しく行うには、RKClient.mの216行目をデバッグして、ヘッダがどこにあるのかを確認してください。 – lawicko

+0

私はContent-Typeと一緒にUTF-8エンコーディングを追加するためにsetHTTPHeaderフィールドを試したのを覚えていますが、ヘッダーの値をチェックするとコンテンツタイプはapplication/x-www-form-urlencodedのままです – Appsido

+0

重要な情報は**ですあなたが*投稿*に電話する前に、**あなたがヘッダーを設定するとき?これまで通り、まだ設定されていない場合は、前に述べたように216行目をデバッグしてください。 – lawicko

答えて

2

これを行うRestKitを使用しています:

[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"api" delegate:self block:^(RKObjectLoader *loader) { 
    [loader setAdditionalHTTPHeaders:[NSDictionary dictionaryWithObjectsAndKeys:@"application/x-www-form-urlencoded;charset=UTF-8", @"Content-Type", nil]]; 
}]; 

はあなたがいずれかを必要とする場合は、他のヘッダを追加することを忘れないでください。

RestKitコードを通過しながら、私は気づいた1つの追加の事、RKObjectManagerライン222:

loader.method = RKRequestMethodGET; 

だから、メソッドがPOST、GETないであなたを驚かれることはありません。あなたが本当にPOSTが必要な場合(私はあなたがそうは思わない)、ブロック内のメソッドを変更します。