2016-07-23 4 views
0

これは重複した質問かもしれませんが、すべてをチェックして、iOS9の正常な回答を見つけることができません。 -stringByAddingPercentEscapesUsingEncodingは推奨されていません。 -stringByAddingPercentEncodingWithAllowedCharactersを使用する必要がありますNSURL:NSCharacterSetを使用してバックスラッシュをエコーする

以下は、APIがセッションを認証して応答を返すためにバックスラッシュをエスケープする必要がある文字列です。標準のURLの文字セットは、バックスラッシュをエスケープしていない

NSString *base = @"http://domain.com/interface/?end=imember"; 
NSCharacterSet *set = [NSCharacterSet URLQueryAllowedCharacterSet]; 
NSString *key = [@"&client_key=KOB3N6KX9JXF2MRPO5U.BRFYM7TYVE\/16KIJVXZA6R7H\/1LD1K\/JYIYG7IZP2HA7NUYOVNT3CJG==&token=SGD7E9B29TQ.8HIITZ37XW3GLK5OGLZNLCDM=" stringByAddingPercentEncodingWithAllowedCharacters:set]; 

、私はそれらすべてを試してみました:

URLUserAllowedCharacterSet 
URLPasswordAllowedCharacterSet 
URLHostAllowedCharacterSet 
URLPathAllowedCharacterSet 
URLQueryAllowedCharacterSet 
URLFragmentAllowedCharacterSet 

誰かが助けることができれば、私は開発にかなり新しいですしてください。バックスラッシュを含むカスタム許可セットを作成することは可能ですか?

EDIT:

これは、URLがどのように見えるかです:

http://domain.com/interface/?end=imember&client_key=KOB3N6KX9JXF2MRPO5U.BRFYM7TYVE\/16KIJVXZA6R7H\/1LD1K\/JYIYG7IZP2HA7NUYOVNT3CJG==&token=SGD7E9B29TQ.8HIITZ37XW3GLK5OGLZNLCDM= 

答えて

1

あなたが答えるための厳密解をbelow.Iが、他の答えよりも良い答えです.That Zaph's answerからそれを得ています。

NSString *unescaped = @"http://domain.com/interface/?end=imember"]; 
NSString *escapedString = [unescaped stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]; 
NSLog(@"escapedString: %@", escapedString); 

URLエンコード文字セットは、私がURLHostAllowedCharacterSetを使用する場合、これは結果である

URLFragmentAllowedCharacterSet "#%<>[\]^`{|} 
URLHostAllowedCharacterSet  "#%/<>[email protected]\^`{|} 
URLPasswordAllowedCharacterSet "#%/:<>[email protected][\]^`{|} 
URLPathAllowedCharacterSet  "#%;<>?[\]^`{|} 
URLQueryAllowedCharacterSet  "#%<>[\]^`{|} 
URLUserAllowedCharacterSet  "#%/:<>[email protected][\]^` 
+0

ます: – Alexander

+0

'&client_key = KOB3N6KX9JXF2MRPO5U.BRFYYGM7TYVE%2F16KIJVXZHUA6R7H%2F1LDD1K%2FJYIY22G7IZP2HA7NUYOVJWEHNT3CJG ==&トークン= SGD7XXL ... LZNLCDM = 'それはパーセンテージ記号 – Alexander

+0

でバックスラッシュを置き換えましたありがとう、それは接続するときに間違ったエラーでした... – Alexander

関連する問題