J'essaye de télécharger un fichier sur mon serveur personnel.Comment gérer correctement l'authentification HTTP Digest sur iPhone
J'ai écrit une petite page php qui fonctionne flawlessy jusqu'à présent.
La petite chose étrange est que je génère tout le corps du message HTTP que je vais envoyer (disons que cela équivaut à ~ 4 Mo) et j'envoie la requête à mon serveur.
Le serveur, puis, demande un défi HTTP et ma connexion de délégué: didReceiveAuthenticationChallenge: défi répond au serveur avec les informations d'identification appropriées et les données.
Mais, que s'est-il passé? Les données ont été envoyées deux fois!
En fait, j'ai remarqué que lorsque j'ai ajouté la barre de progression .. les applications envoie les données (4mb), le serveur demande l'authentification, les applications ré-envoie les données avec l'authentification (4mb). Donc, à la fin, j'ai envoyé 8mb. C'est faux.
j'ai commencé à googler et la recherche d'une solution, mais je ne peux pas comprendre comment résoudre ce problème.
Les scénarios cas sont deux (je pense):
- Partager le domaine pour toute la session (une requête HTTP minimale, puis remettent en cause, alors les données)
- Utilisez la manière synchronisée pour effectuer une requête HTTP connexion (choses que je ne veux pas faire, car il semble un moyen laid pour gérer ce genre de choses me)
Merci
Existe-t-il un moyen de le faire en utilisant les fonctionnalités NS fournies par iPhone SDK? J'ai réussi à atteindre l'objectif en utilisant ASIHTTPRequest et en faisant deux connexions (la première synchronisée, avec nom d'utilisateur et mot de passe) et la seconde asynchronisée remplie uniquement avec les données. C'est juste une question de curiosité, mais j'aimerais creuser là-dedans. –
Ne pouvez-vous pas utiliser NSUrlConnection? Sinon, vous pourriez être bloqué avec CFNetwork directement, ou (comme vous l'avez déjà utilisé) ASIHttpRequest. (Je ne suis pas un programmeur iPhone, donc je vous donne des conseils basés sur mon expérience Mac, aussi ancienne soit-elle.) – Kylar
J'ai réussi à le résoudre en utilisant ASIHTTPRequest. La première fois que j'utilise une requête synchronisée avec des informations d'identification (et je crée une session). La deuxième connexion que j'ouvre est déjà authentifiée si le premier a réussi. :) –