2010-08-23 11 views
1

J'essaie de transmettre une requête à une URL en utilisant HTTP POST sur iPhone. Le corps HTTP contient des caractères d'échappement.Échapper les caractères dans NSURLRequest

NSString *requestMessage=[NSString stringWithString:@"?username/u001password/u001description"]; 
    NSMutableURLRequest *url=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://welcome.com"]]; 
    [url setHTTPMethod:@"POST"]; 
    [url setHTTPBody:[requestMessage dataUsingEncoding:NSUTF8StringEncoding]]; 
    NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:url delegate:self]; 

Le caractère d'échappement est ici /u001.

En utilisant ce code je n'obtiens pas de bonnes réponses. Je pense que le problème est avec les caractères d'échappement seulement. S'il vous plaît donnez-moi une solution pour donner une séquence d'échappement comme celle-ci dans Cocoa. Merci d'avance.

Répondre

2

Vous avez confondu les barres obliques (/) avec les barres obliques inverses (\). Vous avez besoin d'une barre oblique inverse pour former une séquence d'échappement; une barre oblique est juste une barre oblique, et "/ u001" est juste une barre oblique, la lettre "u", deux chiffres zéro, et un chiffre. Cela dit, si vous voulez vraiment inclure U + 0001 dans votre chaîne, même \u001 est faux. Vous voulez \x01 ou peut-être \u0001 (mais je semble se rappeler que GCC se plaint si vous utilisez \u pour un caractère inférieur à U + 0100). Je me demande pourquoi le serveur aurait besoin de U + 0001 comme séparateur, cependant. Existe-t-il des documents d'API publics pour le serveur que vous interrogez?

0

Que voulez-vous échapper? Je ne comprends pas très bien ce que vous essayez de faire. Voulez-vous écrire "&"? Alors fais le. Ce n'est pas du HTML. En outre, [NSString stringWithString:@"…constant string…"] est superfluide. @"…constant string…" est tout ce dont vous avez besoin.

Il existe une méthode dans NSString pour ajouter des pourcentages d'échappement aux URL: -(void)stringByAddingPercentEscapesUsingEncoding:. Peut-être que c'est ce que tu cherches?