Je me demande pourquoi cette requête HTTP POST ne fonctionne pas dans mon application iPhone.La requête HTTP POST ne fonctionne pas, les méthodes déléguées ne sont pas appelées
Je sais pertinemment que l'URL est correcte et que les variables que j'envoie sont correctes, mais pour une raison quelconque, la demande n'est pas reçue par la page .aspx
.
EDIT:
Je refactorisé le code dans sa propre classe, avec ses propres méthodes de délégué. Mais les méthodes de délégué ne sont pas appelées.
La classe est appelée comme ceci:
URLCallClass *reporter=[[[URLCallClass alloc] init]autorelease];
[reporter sendoview:@"http://mysite/page.aspx" params:httpBodyString];
et c'est la classe elle-même:
-(void)sendview:(NSString *)server params:(NSString *)params
{
NSURL* url=[[NSURL alloc] initWithString:server];
NSMutableURLRequest *urlRequest=[NSMutableURLRequest requestWithURL:url];
[url release];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];
connectionResponse=[[[NSURLConnection alloc] initWithRequest:urlRequest delegate:self] autorelease];
//NSURLConnection *connectionResponse = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
if (!connectionResponse)
{
NSLog(@"Failed to submit request");
}
else
{
NSLog(@"---------Report Request submitted ---------");
}
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"report received response");
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"report failed with error");
NSLog(@"%@", [error description]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"Promo View Reported");
}
-(void)dealloc
{
[connectionResponse release];
[super dealloc];
}
Donc, pour clarifier: tout ce code était en cours d'exécution sur un thread autre que le thread principal? – JeremyP
Eh bien, il y avait UIView en cours d'exécution sur le thread principal et le code httprequest était dans une instance de classe dans cet UIView. Je crois que cette classe de requête http s'est terminée avant de terminer sa connexion url asynchrone une fois que la fonction UIView qui l'a appelée a fini d'exécuter la méthode qui l'a appelée. Donc, je ne pense pas que c'était sur le fil principal, mais la classe qui l'a appelé était. Je pourrais être loin d'ici, c'est tout à fait nouveau pour moi et j'apprends encore. – dubbeat