NSURLConnection sendSynchronousRequest semble se bloquer

Ce HTTP appel semble être suspendu et je ne vois pas pourquoi. L'enregistrement en ligne de la suite de l'appel n'est jamais à court.

Je suis à peu près sûr de faire quelque chose de très stupide, mais si quelqu'un peut ce qu'il est, je lui en serais reconnaissant. Aussi loin que je peux voir mon code est équivalent à la documentation.

Il ne semble pas à la matière ce que l'URL que j'utilise, et la requête HTTP n'est jamais enregistrés par le serveur (si pointé à une).

NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];

NSURLResponse *res = nil;
NSError *err = nil;

NSLog(@"About to send req %@",req.URL);

NSData *data = [NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err];

NSLog(@"this never runs");

Des idées?

Mise à jour

Merci à tous ceux qui sont publiés à ce jour. Encore à voir le problème. Un peu plus de détails:

  • Le code est en cours de test sur l'appareil
  • Autres HTTP appels fonctionnent bien, donc si c'est un problème de réseau, c'est un non-trivial d'un
  • Le code planait bien au-delà de la normale délai d'attente. Je sais qu'il se bloque pendant plus de 20 minutes. Je l'ai tué à ce moment, mais je suppose qu'il continuerait à se bloquer.
  • Je ne suis pas actuellement à l'aide d'un délégué et ne comptez pas, voir ci-dessous.
  • Dans d'autres endroits dans l'application j'utilise sendAynchronousRequest mais dans ce cas j'ai besoin de passer une valeur de retour (et je ne suis pas sur le thread principal), donc sendSynchronousRequest est la seule option que je connais.
  • En cas de questions, le contexte est que je me suis mise en œuvre de la NSURLCache protocole, plus précisément le cachedResponseForRequest méthode, qui nécessite-je retourner un NSCachedURLResponse
  • Avez-vous le voir dans la référence? "Parce que cet appel peut prendre plusieurs minutes à l'échec (en particulier lors de l'utilisation d'un réseau cellulaire dans iOS), vous ne devriez jamais appeler cette fonction à partir du thread principal d'une application graphique."
  • Avez-vous de mettre en œuvre le délégué des méthodes de NSURLConnection? Comme certains d'entre eux sont assez important. Comme didFailWithError: ou didRecieveData:.
  • Il est vrai, comme dit dans les commentaires et réponses, qui sendSynchronousRequest: bloque le thread principal. Mais cela n'explique pas pourquoi cette méthode doit s'accrocher éternellement, tel que revendiqué dans la question. Il doit y avoir un autre problème. (Et votre code fonctionne dans mon simulateur en moins d'une seconde.)
  • Pourquoi cette question est d'obtenir downvotes? --
  • Je voudrais savoir combien de temps l'OP attendu avant d'abandonner. C'est un facteur important.
  • sendSynchronousRequest: ne pas utiliser délégué méthodes.
  • Merci pour la clarification. Je ne savais pas, j'avais supposé qu'il a fait depuis qu'il utilise NSURLConnection.
  • J'ai couru le code. Il a bien fonctionné.
  • J'ai attendu différents moments. D'attente est de plus de 5 minutes. Je suis sur une connexion wifi, et je vois encore le coup avec mon local serveur de dev. Actuellement à la recherche à mon délégué déclaration comme cela semble être le candidat le plus probable. Merci tout le monde.
  • Si vous avez attribué un délégué à la NSURLConnection objet? Un autre détail important manquant à partir de la question.
  • Ce délégué déclaration? sendSynchronousRequest: ne pas utiliser délégué méthodes. Le problème se produit sur le périphérique ou simulateur?
  • yep, j'ai réalisé que, après commentant et en regardant fixement blanc XCode pour un moment. Le problème se produit sur le périphérique.
  • avez-vous comprendre cela? Je suis aussi en train d'essayer d'envoyer un NSURLConnection dans le cachedResponseForRequest méthode. Je suis également à traîner. Je vois que vous êtes à l'aide de la webview proxy, mais qui ne s'applique pas à ma situation.
  • non, je n'ai pas le résoudre. Étant donné que le même code fonctionne très bien lorsqu'il est exécuté dans d'autres contextes, je soupçonne quelque chose à propos de cachedResponseForRequest est à l'origine une erreur que mon code n'a pas pris de

InformationsquelleAutor Richard Marr | 2013-10-30