2015-11-30 1 views
0

Pourquoi aucun résultat n'est imprimé?NSURLSession.sharedSession(). DataTaskWithRequest (demande) ne renvoie rien à moins d'une erreur

J'ai cherché partout pour une réponse. J'ai essayé plusieurs exemples de blocs de code. Les instructions d'impression ne se déclenchent jamais, sauf si une erreur est produite. Par exemple: Si je change l'URL en "http" uniquement avec rien d'autre, j'obtiens naturellement une erreur et il imprime l'erreur. Cependant, toute URL valide ne produit aucun résultat dans l'instruction print.

func post() 
{ 
    let request = NSMutableURLRequest(URL: NSURL(string: "http://www.thebeerstore.ca")!) 
    request.HTTPMethod = "POST" 
    let postString = "experiment" 
    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) 
    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 
     data, response, error in 
     if error != nil { 
      print("error=\(error)") 
      return 
     } 

     print("response = \(response)") 

     let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
     print("responseString = \(responseString!)") 

    } 
    task.resume() 
} 

Modifier: Cela fonctionne si j'utilise une aire de jeux, mais seulement dans un terrain de jeux.

Répondre

0

Dans le fichier Info.plist de votre application, ajoutez la propriété App Transport Security Settings et, sous cela, ajoutez Allow Arbitrary Loads et affectez YES pour cela.

Avec les réglages ci-dessus dans votre Info.plist, l'application devrait être en mesure de charger vos http:// URL aussi bien

enter image description here

Note: Je recommande de ne pas utiliser les paramètres ci-dessus dans votre build de production, cela pourrait entraîner des problèmes de sécurité.

+0

Je l'ai déjà fait. En passant, j'ai pu lire toutes les données du site Web de la brasserie et en extraire ce dont j'ai besoin. Je ne peux tout simplement pas commencer à les publier dans ma base de données à cause de ce problème. – bhardy

+0

De quel problème parlez-vous? déclaration d'impression ne pas tirer? –

+0

Oui, print ("response = \ (response)") ne produit rien. Pour être plus précis, c'est comme s'il n'atteignait jamais cette affirmation. – bhardy

0

Il n'y a pas de bonne explication pour cela, mais ayant finalement coincé ce même code problème dans mon projet principal, il fonctionne maintenant parfaitement bien. Qu'est ce qui a changé??? Arrrrg! Combien d'heures gaspillées et je ne sais toujours pas pourquoi cela ne fonctionnait pas en dehors de mon application principale. Merci pour votre aide tout le monde.

Code final:

J'espère que je peux envoyer plus de 100 Mo par une demande de poste à interpréter sur le côté serveur et stocker la base de données. Je n'ai pas fait ça avant. Je suis un débutant.

func post() 
{ 
    let request = NSMutableURLRequest(URL: NSURL(string: "http://bruceexpress.com/database.php")!) 
    request.HTTPMethod = "POST" 
    request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(stores, options: []) 
    request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
    request.addValue("application/json", forHTTPHeaderField: "Accept") 

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) 
    { 
     data, response, error in 
     if error != nil { 
      print("error=\(error)") 
      return 
     } 

     print("response = \(response)") 

     let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
     print("responseString = \(responseString!)") 

    } 
    task.resume() 
} 

Modifier: Oui, vous pouvez publier un énorme bloc de données. Est-ce la bonne façon de le faire? (Pardonnez mes questions stupides, mais je récupère des compétences de programmation de 2001. Je suis une personne très désuète.)

Fondamentalement, ce que j'ai fait est de lire toutes les données sur http://www.thebeerstore.ca, extrait chaque bière et son info et les prix, et extrait chaque magasin et ses infos. J'ai interprété ces données, je l'ai converti en un grand bloc JSON et je l'ai envoyé à mon serveur pour qu'il soit interprété par un script php qui stockera ces données dans une base de données.

Semble-t-il que ce soit la bonne chose à faire, ou existe-t-il un meilleur moyen de remplir la base de données?