Tôi mới phát triển iphone. Tôi đã đăng URL bằng tên người dùng và mật khẩu. Tôi có thể in dữ liệu trong phương thức "connection didReceiveData". Nhưng tôi thấy phương thức "connection didReceiveData" được gọi hai lần. Tôi không biết, tôi đang đi sai ở đâu. Đây là mã của tôikết nối didReceiveData được gọi hai lần trong khi đăng một Url trong iphone?
- (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);
}
Toàn bộ trang HTML được in hai lần trong bảng điều khiển. Xin hãy giúp tôi.
Nếu bạn nhận được lượng lớn dữ liệu, bạn có thể muốn xem NSFileHandler để ghi các phần vào đĩa khi chúng đến. Nếu không NSMutableData sẽ ổn, đặc biệt là nếu bạn không muốn lưu trữ dữ liệu. – FelixLam
Điểm tốt, Felix - đặc biệt là về bộ nhớ hạn chế của iPhone. –