2013-03-11 2 views
2

Я хочу вставить много данных в базу данных mysql, только текст, конечно.Что более эффективно и безопасно, почтовое соединение или прямое подключение к базе данных?

Я сейчас делаю через почту, например insertUser.php?user=asd&pass=asdas&email=asdasd, и это даст мне ответ, если это было нормально или нет, но теперь я пытаюсь upload гигантский объем данных, как insertData.php?xml=string&userid=2 и ответ на это тоже является большим и иногда это займет много времени, потому что для мобильных телефонов в основном используется 3g (android & iOS), так что будет более эффективно, все еще делать post connections или direct mysql connection?

Спасибо.

+1

я надеюсь, что вы будете использовать фоновый процесс, как сво интенсивный процесс времени .. проверить многослойную загрузку для больших объемов данных, таких как изображения и файлы –

+1

лучше использовать метод «POST» в отправлять данные на сервер. Поскольку вы используете метод GET для этого, но метод «GET» имеет ограничение по длине, как я думаю. Даже «POST» безопасен, чем «GET». – Exploring

+0

Ну, я использую POST, но я набрал как GET. – rokimoki

ответ

1

Проверить ответ ниже

xmlbody = (NSString *)CFURLCreateStringByAddingPercentEscapes(
                     NULL, 
                      (CFStringRef)xmlbody, 
                      NULL, 
                      (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", 
                      kCFStringEncodingUTF8); 

NSMutableString *entirexmlbody=[[NSMutableString alloc]init ]; 
[entirexmlbody appendString:@"xml="]; 
[entirexmlbody appendString:xmlbody]; 

NSLog(@"posting XML Body after encoding--%@\n",xmlbody); 

NSData *postData = [entirexmlbody dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]]; 
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:posturl]]; 

[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:postData]; 
NSURLConnection *conn=[[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease]; 
+0

Спасибо, я думаю, что это сработает, должен ли я сделать это в потоке? или ... например, если мне нужно отправить файл в 100 Мбайт (конечно, это будет не так), он будет загружен? и если ответ составляет около 100 МБ текстового файла, он будет отвечать без нулевого ответа? – rokimoki

+1

Я думаю, что {NSURLConnection} уже создает отдельный поток, поэтому мне не нужно создавать другой поток. И 100mb - это огромные данные, которые я никогда не тестировал с такой большой информацией или ответом. – Exploring

+0

Хорошо, спасибо mate =) – rokimoki