Ich bin neu in der iPhone-Entwicklung. Ich habe die URL mit dem Benutzernamen und dem Passwort gepostet. Ich bin in der Lage, die Daten in "Verbindung didReceiveData" -Methode zu drucken.Aber ich sehe "Verbindung didReceiveData" -Methode zweimal aufgerufen. Ich weiß nicht, wo ich falsch liege. Hier ist mein CodeVerbindung DidReceiveData zweimal beim Buchen einer Url in iPhone aufgerufen?
- (void)viewDidLoad {
[super viewDidLoad];
NSString *post = [NSString stringWithFormat:@"&domain=school.edu&userType=2&referrer=http://apps.school.edu/navigator/index.jsp&username=%@&password=%@",@"xxxxxxx",@"xxxxxx"];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://secure.school.edu/login/process.do"]]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"];
[request setHTTPBody:postData];
NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];
if(conn)
{
NSLog(@"Connection Successful");
}
else
{
NSLog(@"Connection could not be made");
}
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data{
NSString *string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"the data %@",string);
}
Die gesamte HTML-Seite wird zweimal im console.So gedruckt bitte helfen Sie mir out.Thanks.
Wenn Sie große Datenmengen empfangen, sollten Sie sich NSFileHandler ansehen, um die Chunks auf die Festplatte zu schreiben, sobald sie eintreffen. Sonst sollte NSMutableData in Ordnung sein, besonders wenn Sie die Daten sowieso nicht speichern wollen. – FelixLam
Guter Punkt, Felix - besonders in Bezug auf den begrenzten Speicher des iPhones. –