2010-04-02 4 views
4

J'ai un NSURLConnection qui est un message sur le serveur, mais je m'attends à ce qu'il renvoie de petites données, qu'elles aient été réussies ou non.NSURLConnection POST appelle également GET de la même URL

 -(void)submitPost:(NSString *)xml 
    { 
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[service generateURL]]; 
     NSString *result = (NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)xml, NULL, CFSTR("?=&+"), kCFStringEncodingUTF8); 
     [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
     [request setHTTPBody:[result dataUsingEncoding:NSUTF8StringEncoding]]; 
     [request setHTTPMethod:@"POST"]; 
     NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:self]; 
     if(theConnection) 
     { 
      NSLog(@"Connection success"); 
      [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 
      [theConnection retain]; 
      failed = NO; 
     } 
     else 
     { 
      NSLog(@"Connection failed"); 
     } 
} 

Le problème est, non seulement il envoyer un message l'URL, il envoie aussi un GET, et la réponse GET est retournée que les données ... Je suis un peu confus. J'ai vérifié ma sortie de wireshark, et c'est certainement faire un poteau et un get.

Qu'en pensez-vous?

+0

Il semble inutile de conserver la connexion puisque vous l'avez déjà allouée. – ma11hew28

Répondre

8

L'URL répond-elle à un POST avec redirection? Vous pouvez implémenter la méthode de délégué NSURLConnection connection:willSendRequest:redirectResponse: pour voir si c'est le cas (et pour annuler une redirection indésirable).

+0

Je viens de mettre en œuvre cette méthode, et il est appelé. Mais je ne suis pas sûr de ce que cela signifie, pourriez-vous l'expliquer? Je ne comprends pas vraiment la documentation non plus. – kodai

+0

Si cette méthode est appelée, cela signifie que la réponse est une redirection. Vous pouvez inspecter le paramètre NSURLRequest transmis à cette méthode pour voir où elle redirige. La demande pour l'URL de redirection est le GET supplémentaire que vous voyez. Si la redirection provoque un problème dans votre application, vous pouvez annuler ou modifier la redirection dans cette méthode de délégué. – dstnbrkr