2009-06-07 16 views
0

Je cherche un moyen d'ajouter un délai à une demande CFHTTP. Il semble qu'il devrait y avoir une caractéristique de l'objet CFHTTPMessage ou CFReadStream, mais je ne peux pas le trouver. Dois-je lancer ma propre minuterie sur la boucle d'exécution ou quelque chose? (Dans ce cas, n'importe quel code pour cela?)Délai d'attente HTTP CFNetwork?

Merci!

Répondre

-1

Mise à jour: ASIHTTPRequest est obsolète et n'est plus maintenu. Je recommanderais maintenant soit en utilisant Apple construit dans NSURLConnection. NSURLConnection a une très petite API asynchrone avec la plupart des fonctionnalités contenues dans NSURLRequest. vous pouvez spécifier votre délai d'attente en utilisant NSURLRequest « s requestWithURL:cachePolicy:timeoutInterval:

Sauf si vous avez une raison particulière pour l'utilisation CFHTTPMessage je vous recommande d'utiliser une classe de niveau supérieur tels que ASIHTTPRequest qui vous laisse toute liberté facilité d'utilisation, y compris les délais d'attente.

+0

Roger, je ne regarde @ ASIHTTPRequest et il semble grand, sauf il y a une chose que je besoin de le faire ce n'est pas le cas - ce qui est des données de flux provenant d'un objet CFReadStream. (Je pourrais ajouter un patch que j'établis ...) – sehugg

+0

Vous devriez laisser tomber Ben à tous les yeux en regardant une ligne. Il répond à son courrier et est un gars sympa. Si vous avez un patch, je suis sûr qu'il le prendrait. –

+0

ASIHTTPRequest utilise un NSInputStream pour le corps de la requête lors de la publication de fichiers à partir d'une requête ASIFormDataRequest, et également à chaque fois que shouldStreamPostDataFromDisk est vrai. Si votre CFReadStream lit à partir d'un fichier sur le disque, utilisez simplement setPostBodyFilePath: et il fera le reste. Sinon, il ne devrait pas être trop difficile de le patcher pour utiliser votre CFReadStream à la place, mais envoyez moi un msg (mon email est sur le site) si vous avez besoin d'un coup de main. – pokeb

2

Essayez ceci, ReadStream est votre CFReadStreamRef:

#define _kCFStreamPropertyReadTimeout CFSTR("_kCFStreamPropertyReadTimeout") 

double to = 15; // 15s timeout 
CFNumberRef num = CFNumberCreate(kCFAllocatorDefault, kCFNumberDoubleType, &to); 
CFReadStreamSetProperty(readStream, _kCFStreamPropertyReadTimeout, num); 
CFRelease(num); 

constante pour le délai d'écriture est _kCFStreamPropertyWriteTimeout