2012-01-21 9 views
1

NSStringをエスケープしてHTTP POSTリクエストで使用できる簡単な方法はありますか?NSStringをHTTP POSTリクエストで受け入れ可能なフォームに変換する

私はstringByAddingPercentEscapesUsingEncodingを試してみましたが、次のようました:

[@"[email protected]#$%^&*()-+\"'" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] 

は私を与える:

&がエスケープされていない残っているので、HTTPのPOSTのクエリでは使用できません
[email protected]%23$%25%5E&*()-+%22' 

。したがって、他の終わりはそれを後続するものを別の引数として解釈します。

+0

は、NSStringのためのURLエンコードカテゴリを検索します。それはMIT Licenseの下にあるようで、 "NSString + URLEncoding.m"を検索すると見つかります。 –

+0

@Maudicus:ありがとうございました。Google Googlerの回答として投稿しています。 – houbysoft

+1

参照http://stackoverflow.com/questions/718429/creating-url-query-parameters-from-nsdictionary-objects-in-objectivec、http://stackoverflow.com/questions/1748981/nsurl-encoding-in -objc、http://stackoverflow.com/questions/2159341/nsstring-method-to-percent-escape-for-url – Isaac

答えて

1

次の関数、NSString+URLEncoding.mの一部は、私は必要なものを正確に行います。

- (NSString *)encodedURLParameterString { 
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
                     (CFStringRef)self, 
                     NULL, 
                     CFSTR(":/=,!$&'()*+;[]@#?"), 
                     kCFStringEncodingUTF8); 
    return [result autorelease]; 
} 
関連する問題