NSURLRequest ne peut pas gérer le corps HTTP lorsque la méthode n'est pas POST?
Chaque fois que j'ai mis un corps sur une mutable demande à la méthode indiquée à rien d'autre que la POSTE, le corps n'est pas inclus dans la demande et je reçois un kCFErrorDomainCFNetwork erreur 303 (kCFErrorHTTPParseFailure) lorsque le serveur répond. La modification de la méthode de POSTE est tout ce qu'il faut pour la demande de passer aucune erreur. Est-il possible de joindre un corps à d'autres méthodes, ou sommes-nous coincés avec la POSTE pour tout?
C'est la soumission de code:
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:assembleURL]];//cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:45.0];
#if (SERVER_TARGET_ARGS_ALLOWED==1)
[req setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[req setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[req setHTTPMethod:ServerMessageMethods[operation]]; //value is @"POST" or other method name
#endif
//run the payload into a JSON
SBJsonWriter *json = [[SBJsonWriter alloc] init];
NSString *encodedPayload = [json stringWithObject:payload];
encodedPayload = [NSString stringWithFormat:@"%@", [encodedPayload stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSData *dataPayload = [encodedPayload dataUsingEncoding:NSUTF8StringEncoding];
[req setHTTPBody:dataPayload];
NSURLConnection *conn = [NSURLConnection connectionWithRequest:req delegate:self];
source d'informationauteur Mark
Vous devez vous connecter pour publier un commentaire.
J'ai essayé de trouver des informations plus récentes à ce sujet, mais il y avait un vieux post sur la question précise que vous parliez de: http://lists.apple.com/archives/cocoa-dev/2004/May/msg01847.html
Fondamentalement, ils mentionnent qu'il s'agit d'un bogue dans le code. Malheureusement, je souhaite que je pourrais trouver quelque chose de plus récent que le confirme.
Le code que j'ai utilisé est ASIHTTPRequest et il peut certainement faire de METTRE les demandes, car ils utilisent un plus faible niveau de jeu de code pour créer le HTTP messages et ne comptez pas sur la
NSMutableUrlRequest
.Aussi, j'ai trouvé un autre blog à parler du problème et que vous devez mettre pour METTRE de la demande. http://iphonedevelopment.blogspot.com/2008/06/http-put-and-nsmutableurlrequest.html
blog:
Êtes-vous de rappeler à l'ensemble de la
Content-Length
/Transfer-Encoding
etContent-Type
les en-têtes? Je ne pense pas queContent-Length
est mis automatiquement pour vous, ce qui signifie que le serveur va supposer que c'est 0.Plus d'infos: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
ici, il est
}