2010-09-02 9 views
0

J'essaie d'envoyer des données à un script PHP en ligne pour soumettre des scores en ligne pour mon application iOS.NSMutableURLRequest setHTTPBody: crash

Le script nécessite des informations d'identification de compte formatées avec les caractères d'échappement appropriés pour une requête HTTP. Il est la méthode setHTTPBody qui encaissent l'application:

 [text_field removeFromSuperview]; 
     text_field.text = @""; //Remove text so it doesn't show because the text field is still on top of the open gl view 
     text_field.enabled = NO; 
     NSMutableURLRequest * request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"secret"] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10.0]; 
     [request setHTTPMethod: @"POST"]; 
     [request setHTTPBody: [[NSString stringWithFormat:@"username=%@&password=%@&score=%i",[ogl_view->username stringByAddingPercentEscapesUsingEncoding:NSUnicodeStringEncoding],[text_field.text stringByAddingPercentEscapesUsingEncoding:NSUnicodeStringEncoding],ogl_view->score[0]] dataUsingEncoding:NSUnicodeStringEncoding]]; 
     NSURLConnection * connection = [[NSURLConnection alloc] initWithRequest: request delegate:self]; 
     if (connection){ 
      received_data = [[NSMutableData data] retain]; 
      ogl_view->section = CURLING_PROCESS_CREDENTIALS; 
     }else{ 
      ogl_view->section = CURLING_LOGIN_OR_REGISTER; 
      UIAlertView *connection_alert = [[UIAlertView alloc] initWithTitle:@"Error" message: @"Can't connect to server" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles: nil]; 
      [connection_alert show]; 
      [connection_alert release]; 
     } 

J'ai trouvé qu'il tombe en panne au point que la méthode setHTTPBody est appelée. Quelqu'un sait-il pourquoi?

Merci pour toute réponse.

Edit: Voici le journal de l'accident:

2010-09-02 19:02:30.291 iPhone Monkey Curling[431:207] -[DOMText stringByAddingPercentEscapesUsingEncoding:]: unrecognized selector sent to instance 0x5c97ce0 
    2010-09-02 19:02:30.293 iPhone Monkey Curling[431:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[DOMText stringByAddingPercentEscapesUsingEncoding:]: unrecognized selector sent to instance 0x5c97ce0' 
    *** Call stack at first throw: 
    (
     0 CoreFoundation      0x02531919 __exceptionPreprocess + 185 
     1 libobjc.A.dylib      0x0267f5de objc_exception_throw + 47 
     2 CoreFoundation      0x0253342b -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
     3 CoreFoundation      0x024a3116 ___forwarding___ + 966 
     4 CoreFoundation      0x024a2cd2 _CF_forwarding_prep_0 + 50 
     5 iPhone Monkey Curling    0x00004338 -[PasswordFieldDelegate textFieldShouldReturn:] + 450 
     6 UIKit        0x00699358 -[UIKeyboardImpl callShouldInsertText:] + 148 
     7 UIKit        0x05f29c86 -[UIKeyboardImplAccessibility(SafeCategory) callShouldInsertText:] + 70 
     8 UIKit        0x006a0693 -[UIKeyboardImpl addInputString:fromVariantKey:] + 107 
     9 UIKit        0x006a2957 -[UIKeyboardImpl handleKeyEvent:] + 1723 
     10 UIKit        0x007c31c0 -[UIKeyboardLayoutStar sendStringAction:forKey:] + 684 
     11 UIKit        0x007c79ba -[UIKeyboardLayoutStar touchUp:] + 2556 
     12 UIKit        0x006b99a3 -[UIKeyboardLayout touchesEnded:withEvent:] + 550 
     13 UIKit        0x0058a2ff -[UIWindow _sendTouchesForEvent:] + 567 
     14 UIKit        0x0056c1ec -[UIApplication sendEvent:] + 447 
     15 UIKit        0x00570ac4 _UIApplicationHandleEvent + 7495 
     16 GraphicsServices     0x02d97afa PurpleEventCallback + 1578 
     17 CoreFoundation      0x02512dc4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52 
     18 CoreFoundation      0x02473737 __CFRunLoopDoSource1 + 215 
     19 CoreFoundation      0x024709c3 __CFRunLoopRun + 979 
     20 CoreFoundation      0x02470280 CFRunLoopRunSpecific + 208 
     21 CoreFoundation      0x024701a1 CFRunLoopRunInMode + 97 
     22 GraphicsServices     0x02d962c8 GSEventRunModal + 217 
     23 GraphicsServices     0x02d9638d GSEventRun + 115 
     24 UIKit        0x00574b58 UIApplicationMain + 1160 
     25 iPhone Monkey Curling    0x00002388 main + 102 
     26 iPhone Monkey Curling    0x00002319 start + 53 
    ) 
+0

En cas de panne, il existe un journal de plantage ou un backtrace provenant du débogueur. Postez-le, s'il vous plaît. – bbum

+0

Il n'y en avait pas avant mais maintenant il y a. Étrange. Je posterai le journal. Je ne sais pas pourquoi il dit que la méthode stringByAddingPercentEscapesUsingEncoding n'est pas valide. Bissare. –

Répondre

3

-setHTTPBody accepte NSData, pas un NSString. Vous aurez besoin de convertir votre NSString en NSData avant de le régler.

Heureusement, NSString a une méthode dataUsingEncoding: pour le rendre super facile.

+0

Merci. J'ai implémenté ceci. Malheureusement, il s'écrase toujours. –

+0

Votre journal des pannes indique que vous essayez d'envoyer stringByAdding ... à quelque chose qui n'est pas un NSString. Je regarderais ça. –

+0

ogl_view-> le nom d'utilisateur est définitivement un NSString et donc si la propriété de texte sur le champ de texte ... je vais devoir regarder profondément dedans. Puisque vous avez porté un autre problème à mon attention, j'accepterai votre réponse comme une solution et je vous en remercie. Le problème ici doit commencer ailleurs ... –